2016-09-15 4 views
0

Ich kann nicht glauben, dass ich das nicht herausfinden kann. Nachdem ich gestern zu Swift 3 gewandert bin, habe ich bis auf eine Sache gearbeitet.Migration zu Swift 3 von Swift 2.2 brach meine benutzerdefinierte Unterklasse UIButton die Einstellung der Hintergrundfarbe

Ich erstellte eine benutzerdefinierte Schaltfläche Unterklasse von UIButton. Nach der Auswahl möchte ich die Hintergrundfarbe ändern. Dies funktionierte in Swift 2.2. Jetzt kann ich die Hintergrundfarbe nicht ändern, wenn die Taste gedrückt wurde. Ich kann die Hintergrundfarbe eines UIButton, aber nicht auf dem Unterklasse-Knopf noch ändern.

Was hat sich in Swift 3 geändert, fehlt mir etwas? Die Farbe für setTitleColor ändert sich übrigens.

Code:

func selectButton(_ button: CustomButton) { 
    button.isSelected = true 
    button.backgroundColor = UIColor.red 
    button.setTitleColor(UIColor.white, for: .selected) 
} 

Als ich printstatements hinzufügen, ich sehe, dass die Ausgabe unterschiedlich ist, aber die Aussicht (Farbe) hat sich nicht verändert.

print("CHANGE COLOR FROM: \(button.backgroundColor)") 
button.backgroundColor = UIColor.red 
button.setTitleColor(UIColor.white, for: .selected) 
button.setNeedsDisplay() 
print("CHANGE COLOR TO: \(button.backgroundColor)") 

Ausgang:

CHANGE COLOR FROM: Optional(UIExtendedGrayColorSpace 1 1) 
CHANGE COLOR TO: Optional(UIExtendedSRGBColorSpace 1 0 0 1) 
+0

einen kleinen Code-Schnipsel, vielleicht beschrieben? Ich habe zig Designable 'UIViews' (inkl.' UIButtons'), ich habe die Migration gerade erst gestern gemacht und keine der schönen Ansichten war kaputt; Es wäre also schön zu sehen, was Sie getan haben, denn dieses Problem scheint kein generisches Problem zu sein. – holex

+0

Hmm, das sind gute Nachrichten (es ist immer noch möglich) und schlecht (ich schein etwas falsch zu machen). Ich werde die Frage bearbeiten. –

+0

ist es der echte Code? Wie kann man sicher sein, dass 'Color.bePREPared.red()' nicht 'nil' ist? – holex

Antwort

Verwandte Themen