Wie wird ein Benachrichtigungskennzeichen in der Tabellenansicht erstellt?
Wenn neue Daten vorhanden sind, wird das Badge in der Tabellenansicht angezeigt. Wenn die Daten erneut angezeigt werden, wird das Badge automatisch hinzugefügt.So erstellen Sie ein Benachrichtigungskennzeichen in der Tabellenansicht
1
A
Antwort
0
Ich kann Sie den folgenden Rahmen wird dringend empfohlen: swift-badge
use_frameworks!
target 'Your target name'
pod 'BadgeSwift', '~> 4.0'
Einfach zu bedienen:
let badge = BadgeSwift()
view.addSubview(badge)
// Position the badge ...
Anpassung:
// Text
badge.text = "2"
// Insets
badge.insets = CGSize(width: 12, height: 12)
// Font
badge.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
// Text color
badge.textColor = UIColor.yellow
// Badge color
badge.badgeColor = UIColor.black
// Shadow
badge.shadowOpacityBadge = 0.5
badge.shadowOffsetBadge = CGSize(width: 0, height: 0)
badge.shadowRadiusBadge = 1.0
badge.shadowColorBadge = UIColor.black
// No shadow
badge.shadowOpacityBadge = 0
// Border width and color
badge.borderWidth = 5.0
badge.borderColor = UIColor.magenta
// Customize the badge corner radius.
// -1 if unspecified. When unspecified, the corner is fully rounded. Default: -1.
badge.cornerRadius = 10
Auch. Wenn Sie möchten, hier nicht Schoten verwenden ist die vollständige und gebrauchsfertig Klasse Es enthält auch Funktionen, die ich erstellt haben:
import UIKit
/**
Badge view control for iOS and tvOS.
Project home: https://github.com/marketplacer/swift-badge
*/
@IBDesignable public class BadgeSwift: UILabel {
/// Background color of the badge
@IBInspectable public var badgeColor = Colors.red {
didSet {
setNeedsDisplay()
}
}
/// Width of the badge border
@IBInspectable public var borderWidth: CGFloat = 0 {
didSet {
invalidateIntrinsicContentSize()
}
}
/// Color of the bardge border
@IBInspectable public var borderColor = Colors.white {
didSet {
invalidateIntrinsicContentSize()
}
}
/// Badge insets that describe the margin between text and the edge of the badge.
@IBInspectable public var insets: CGSize = CGSize(width: 5, height: 2) {
didSet {
invalidateIntrinsicContentSize()
}
}
// MARK: Badge shadow
// --------------------------
/// Opacity of the badge shadow
@IBInspectable public var shadowOpacityBadge: CGFloat = 0.5 {
didSet {
layer.shadowOpacity = Float(shadowOpacityBadge)
setNeedsDisplay()
}
}
/// Size of the badge shadow
@IBInspectable public var shadowRadiusBadge: CGFloat = 0.5 {
didSet {
layer.shadowRadius = shadowRadiusBadge
setNeedsDisplay()
}
}
/// Color of the badge shadow
@IBInspectable public var shadowColorBadge = Colors.black {
didSet {
layer.shadowColor = shadowColorBadge.cgColor
setNeedsDisplay()
}
}
/// Offset of the badge shadow
@IBInspectable public var shadowOffsetBadge: CGSize = CGSize(width: 0, height: 0) {
didSet {
layer.shadowOffset = shadowOffsetBadge
setNeedsDisplay()
}
}
/// Initialize the badge view
convenience public init() {
self.init(frame: CGRect())
}
/// Initialize the badge view
override public init(frame: CGRect) {
super.init(frame: frame)
setup()
}
/// Initialize the badge view
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
/// Add custom insets around the text
override public func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
let rect = super.textRect(forBounds: bounds, limitedToNumberOfLines: numberOfLines)
var insetsWithBorder = actualInsetsWithBorder()
let rectWithDefaultInsets = rect.insetBy(dx: -insetsWithBorder.width, dy: -insetsWithBorder.height)
// If width is less than height
// Adjust the width insets to make it look round
if rectWithDefaultInsets.width < rectWithDefaultInsets.height {
insetsWithBorder.width = (rectWithDefaultInsets.height - rect.width)/2
}
let result = rect.insetBy(dx: -insetsWithBorder.width, dy: -insetsWithBorder.height)
return result
}
/// Draws the label with insets
override public func drawText(in rect: CGRect) {
layer.cornerRadius = rect.height/2
let insetsWithBorder = actualInsetsWithBorder()
let insets = UIEdgeInsets(
top: insetsWithBorder.height,
left: insetsWithBorder.width,
bottom: insetsWithBorder.height,
right: insetsWithBorder.width)
let rectWithoutInsets = UIEdgeInsetsInsetRect(rect, insets)
super.drawText(in: rectWithoutInsets)
}
/// Draw the background of the badge
override public func draw(_ rect: CGRect) {
let rectInset = rect.insetBy(dx: borderWidth/2, dy: borderWidth/2)
let path = UIBezierPath(roundedRect: rectInset, cornerRadius: rect.height/2)
badgeColor.setFill()
path.fill()
if borderWidth > 0 {
borderColor.setStroke()
path.lineWidth = borderWidth
path.stroke()
}
super.draw(rect)
}
private func setup() {
textAlignment = NSTextAlignment.center
clipsToBounds = false // Allows shadow to spread beyond the bounds of the badge
}
/// Size of the insets plus the border
private func actualInsetsWithBorder() -> CGSize {
return CGSize(
width: insets.width + borderWidth,
height: insets.height + borderWidth
)
}
/// Draw the stars in interface builder
@available(iOS 8.0, *)
override public func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setup()
setNeedsDisplay()
}
}
func createBadge(_ who: BadgeSwift, _ view: UIView, _ value: String) {
if !view.subviews.contains(who) {
view.addSubview(who)
}
configureBadge(who, view, value)
positionBadge(who, view)
}
func removeBadge(_ who: BadgeSwift, _ view: UIView) {
if view.subviews.contains(who) {
who.removeFromSuperview()
}
}
func configureBadge(_ badge: BadgeSwift, _ view: UIView, _ value: String) {
badge.text = value
badge.insets = CGSize(width: 2, height: 2)
badge.font = UIFont.boldSystemFont(ofSize: 12)
badge.textColor = Colors.white
badge.badgeColor = Colors.badgeRed
}
func positionBadge(_ badge: UIView, _ view: UIView) {
badge.translatesAutoresizingMaskIntoConstraints = false
var constraints = [NSLayoutConstraint]()
constraints.append(NSLayoutConstraint(
item: badge,
attribute: NSLayoutAttribute.centerY,
relatedBy: NSLayoutRelation.equal,
toItem: view,
attribute: NSLayoutAttribute.top,
multiplier: 1, constant: 5)
)
constraints.append(NSLayoutConstraint(
item: badge,
attribute: NSLayoutAttribute.centerX,
relatedBy: NSLayoutRelation.equal,
toItem: view,
attribute: NSLayoutAttribute.right,
multiplier: 1, constant: -5)
)
view.addConstraints(constraints)
}
func calculateCount(_ items: [UITabBarItem]) -> String {
var countInt = 0
for i in items {
if let countString = i.badgeValue {
countInt = countInt + Int(countString)!
}
}
return String(countInt)
}
für Ihre Zwecke ein Abzeichen in einem UITableViewCell
zu erstellen, könnten Sie verwenden:
let badge = BadgeSwift()
createBadge(badge, MyCell, "10")
, dass Sie ein Abzeichen der 10.
Verwandte Themen
- 1. So erstellen Sie eine benutzerdefinierte Tabellenansicht innerhalb einer anderen benutzerdefinierten Tabellenansicht in swift
- 2. So erstellen Sie eine Tabellenansicht gruppierten Stil ohne Einrücken Zellen
- 3. Tabellenansicht in ViewDidAppear erstellen
- 4. So fügen Sie Dateien in der Tabellenansicht hinzu javafx
- 5. So erstellen Sie ein Mitarbeiterverzeichnis
- 6. So erstellen Sie ein Blockdiagramm
- 7. Tabellenansicht in der Tabellenansicht swift
- 8. So erstellen Sie ein Modal
- 9. So erstellen Sie ein Meldungsfeld in wpf
- 10. So erstellen Sie ein Köcherdiagramm in Polarkoordinaten
- 11. So erstellen Sie ein Protokolldiagramm in Matlab
- 12. So erstellen Sie ein Array in Python
- 13. So erstellen Sie ein Druckerobjekt in VB
- 14. So erstellen Sie ein Verzeichnis in% appdata%
- 15. So erstellen Sie dynamische Tabellenansicht Fußzeile durch Ändern der Höhe der Zellen
- 16. So erstellen Sie ein Liniendiagramm in cn1
- 17. So erstellen Sie ein Eingabetextfeld in JavaScript
- 18. So erstellen Sie ein Paginierungssystem in Hexo
- 19. So erstellen Sie ein Formular in Excel
- 20. So erstellen Sie ein Kreisdiagramm in CSS
- 21. So erstellen Sie ein Raster in join.js
- 22. So erstellen Sie ein MultiPolygon in Cäsium
- 23. So erstellen Sie ein Prognoseobjekt in R
- 24. So erstellen Sie ein Projekt in der Google Developers Console
- 25. Beschränken Sie ein Textfeld in der Tabellenansicht von Eingabe
- 26. Schatten in einem Tabellenansicht erstellen
- 27. Ein Bild in der Tabellenansicht strecken
- 28. UI friert in der Tabellenansicht ein
- 29. So öffnen Sie eine neue Tabellenansicht programmgesteuert in swift
- 30. Tabellenansicht erstellen und bearbeiten?
das Paar RxSwift/RxCocoa ist ein beliebtes Ziel für das geben würde. –
Können Sie mir helfen, ich habe es versucht, und immer erfolglos. –
Helfen Sie mit was? Sei genauer. Sie haben keine einzige Codezeile angezeigt. –