Ich möchte auf klicken Sie auf die Schaltfläche, um die Tasten Titel ändern:UIButton nicht ändert Titel
func dispatchStatusButton(title title:String, backgroundColor:UIColor) {
self.btnDispatchStatus.setTitleWithoutAnimation(title.uppercaseString)
self.btnDispatchStatus.backgroundColor = backgroundColor
self.btnDispatchStatus.kern(2.0)
}
Wenn ich die Funktion aufrufen:
// Set Button
self.dispatchStatusButton(title: "Inaktiv", backgroundColor: UIColor(red: 40.0/255.0, green: 51.0/255.0, blue: 57.0/255.0, alpha: 1.0))
Es passiert nichts, und ich habe meine Kerning-Funktion einige Gefühl der Grund ist, aber ich sehe nicht, warum:
extension UIButton {
func setTitleWithoutAnimation(title:String?) {
UIView.setAnimationsEnabled(false)
setTitle(title, forState: .Normal)
layoutIfNeeded()
UIView.setAnimationsEnabled(true)
}
func kern(kerningValue:CGFloat) {
let attributedText = NSAttributedString(string: self.titleLabel!.text!, attributes: [NSKernAttributeName:kerningValue, NSFontAttributeName:self.titleLabel!.font, NSForegroundColorAttributeName:self.titleLabel!.textColor])
self.setAttributedTitle(attributedText, forState: UIControlState.Normal)
}
}
Mein Ansatz mit dieser Art von Problemen ist es, den Code so viel wie möglich zu vereinfachen und schrittweise Codezeilen wieder einzuführen. Haben Sie ohne die Aufrufe von 'UIView.setAnimationsEnabled' versucht? –
Ich habe jetzt herausgefunden, dass die Kern-Funktion das Problem ist. sobald ich es wieder deaktiviere funktioniert es. Aber warum wird der Text bei der Verwendung nicht aktualisiert? – sesc360
Schau dir meine Antwort an, ich habe es getestet. –