2017-05-26 3 views
1

Ich habe eine Erweiterung für UIColor, um Farbe von Hex-Zeichenfolge zu erhalten. Ich verwende es wie pro unten:Setzen Sie UIBarButtonItem graue Farbe, wenn deaktiviert

self.navigationItem.rightBarButtonItem?.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor(hexString: "#C0BFC0")], for: UIControlState.disabled) 
    self.navigationItem.rightBarButtonItem?.isEnabled = false 

Aus irgendeinem seltsamen Grunde die Farbe der rightBarButtonItem ist das gleiche wie zuvor. Gibt es eine Möglichkeit, es zu ändern, wenn es deaktiviert ist? Ich habe die oben in meiner viewDidLoad Funktion

Ich habe versucht, die unten zu lesen:

UIBarButtonItem is disabled, but has normal color

Change color of disabled bar button item in iOS

Ich bin in der Lage, die Farbe zu ändern, wenn es nicht deaktiviert ist. Scheint es, wenn die Farben nicht gehorcht werden?

+0

ich diesen Fehler zu erlebe, so scheint es, nur Versionen mit Swift oder vielleicht letzten iOS passieren. Mein Problem bestand darin, eine reguläre UIButton zu verwenden und das UIBarButtonItem damit als benutzerdefinierte Ansicht zu initialisieren. Die UIButton kann normal geändert werden. – Siegfoult

Antwort

1

wenn es deaktiviert ist, werden die Farben nicht befolgt?

Ich traf diesen Fehler mit einigen Symbolleistenelementen. Meine Problemumgehung besteht darin, sicherzustellen, dass sich der UIBarButtonItem-Titel zur Laufzeit ändert, wenn sich die deaktivierte Farbe ändern sollte. Ändern Sie dazu die deaktivierte Farbe, und erzwingen Sie dann die Änderung des Titels, indem Sie bei Bedarf einen unsichtbaren Unicode-Bereich hinzufügen.

Zum Beispiel in Swift:

let zeroWidthSpaceStr = "\u{200B}" 

func forceChangeItemTitle(_ item:UIBarButtonItem, newTitle:String) { 
    // Ensure the button item title is changed. Needed to pick up change in disabled text color 
    var newTitle = newTitle 
    if item.title == newTitle { 
     // Title already set, so change it invisibly 
     newTitle += zeroWidthSpaceStr 
    } 
    item.title = newTitle 
} 
Verwandte Themen