Hallo Freunde, ich bin neu in der iphone Entwicklung. Am Kampf mit Abzeichen Werte auf UIBarbutton Element auf der rechten Seite hinzufügen. Ich habe versucht, aber ich kann dieses Problem nicht lösen. Kann mir jemand helfen.
Vielen Dank im Voraus!
Hallo Freunde, ich bin neu in der iphone Entwicklung. Am Kampf mit Abzeichen Werte auf UIBarbutton Element auf der rechten Seite hinzufügen. Ich habe versucht, aber ich kann dieses Problem nicht lösen. Kann mir jemand helfen.
Vielen Dank im Voraus!
Aktualisiert für Swift 3:
Verwenden Sie den folgenden einfachen Code, um das Abzeichen auf UIBarButtonItem hinzuzufügen;
// Variable Declartion
var badgeCount = Int()
// Instance Method
func setUpBadgeCountAndBarButton() {
// badge label
let label = UILabel(frame: CGRect(x: 10, y: -05, width: 25, height: 25))
label.layer.borderColor = UIColor.clear.cgColor
label.layer.borderWidth = 2
label.layer.cornerRadius = label.bounds.size.height / 2
label.textAlignment = .center
label.layer.masksToBounds = true
label.textColor = .white
label.font = label.font.withSize(12)
label.backgroundColor = .red
label.text = "\(self.badgeCount)"
// button
let rightButton = UIButton(frame: CGRect(x: 0, y: 0, width: 35, height: 35))
rightButton.setBackgroundImage(UIImage(named: "notification_dash"), for: .normal)
rightButton.addTarget(self, action: #selector(notificationBarButtonClick), for: .touchUpInside)
rightButton.addSubview(label)
// Bar button item
let rightBarButtomItem = UIBarButtonItem(customView: rightButton)
navigationItem.rightBarButtonItem = rightBarButtomItem
}
// Call To Method
self.badgeCount = 11
self.setUpBadgeCountAndBarButton()
//Sie müssen Ihren Code so schreiben, wie Sie Ihre Logik entschieden haben, d.h. wie Sie die Anzahl der Abzeichen in der Datenbank aufrechterhalten.
Viel Spaß!
Ich weiß, dass dieses Problem bereits gelöst wurde, aber ich dachte, ich könnte dieser Antwort der Vollständigkeit halber hinzufügen, was ich entdeckt habe.
Sie können auch einfach hinzufügen MKNumberBadgeView
direkt zur Ansicht für die UIBarButtonItem
. Mit Monotouch (C#) erhalten Sie so die Ansicht für die UIBarButtonItem
//barbutton is some UIBarButtonItem. Make sure to check for view. In
//ViewDidLoad(), the view for the barbutton might not exist yet.
Selector sel = new Selector("view");
var handle = Messaging.intptr_objc_msgSend(barbutton.Handle, sel.Handle);
var view = Runtime.GetNSObject(handle) as UIView;
var mkBadge = ... //the badge
view.Add(badge);
view.Layer.ZPosition = <some large number>
Ich bin sicher, dass es einfach ist, dies in Obj-C zu konvertieren. Sie müssen auch mit dem Rahmen für das Abzeichen herumspielen, damit es an der richtigen Stelle angezeigt wird.
Auf diese Weise müssen Sie die Ansicht nicht aus der Navigationsleiste entfernen/hinzufügen.
Nach der Suche nach zu vielen Lösungen habe ich diese beste Lösung für Objective-C gefunden
Gehen Sie auf folgenden Link und laden Sie zwei Dateien herunter "UIBarButtonItem+Badge.h" y "UIBarButtonItem+Badge.m" und zu Ihrem Projekt hinzufügen:
https://github.com/mikeMTOL/UIBarButtonItem-Badge
Dann importieren Sie in Ihrer Klasse :
#import "UIBarButtonItem+Badge.h"
Und schreiben Sie die folgende Zeile, um das Abzeichen hinzuzufügen:
self.navigationItem.rightBarButtonItem.badgeValue = @"1"; //your value
Hoffentlich klappt es!!!
Erweiterung zum Hinzufügen einer UIActivityIndicatorView ohne Ersetzen des UIBarButtonItem.
Erweiterung UIBarButtonItem {
func startLoading() {
guard let view = self.value(forKey: "view") as? UIView else { return }
let loading = UIActivityIndicatorView(activityIndicatorStyle: .gray)
loading.frame = view.bounds
loading.startAnimating()
view.addSubview(loading)
view.bringSubview(toFront: loading)
let buttonView = view.subviews.first
buttonView?.alpha = 0.1
}
func stopLoading() {
guard let view = self.value(forKey: "view") as? UIView else { return }
let loading = view.subviews.filter({ $0 is UIActivityIndicatorView }).first
loading?.removeFromSuperview()
let buttonView = view.subviews.first
buttonView?.alpha = 1.0
}
}
Hier ist eine einfache Swift 4-Lösung für diese Aufgabe (mit einigen Anpassungen) https://github.com/Syngmaster/BadgedBarButtonItem
Ziehen Sie die Klasse einfach per Drag & Drop in Ihr Projekt und Sie können sie so verwenden:
class ViewController: UIViewController {
let btn = BadgedButtonItem(with: UIImage(named: "your_image"))
override func viewDidLoad() {
super.viewDidLoad()
btn.badgeTextColor = .black
btn.badgeTintColor = .yellow
btn.position = .right
btn.hasBorder = true
btn.borderColor = .red
btn.badgeSize = .medium
btn.badgeAnimation = true
self.navigationItem.rightBarButtonItem = btn
btn.tapAction = {
self.btn.setBadge(with: 4)
}
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.