2014-01-09 9 views
5

Bei UISegmentedControl Tönung Dimmen, sobald ein popover oder Alarm vorhanden ist, grau die Steuerung abgeblendet (entsättigt den Farbton Farbe)Individuelle UIControl mit UILabel auf Farbwechsel

Ich bin meine eigene UIControl Unterklasse Gebäude, das verwendet eine UILabel als Subview

i (entsättigt) die Textfarbe des UILabel, genauso wie von UISegmentedControl oder (UIButton ...)

Antwort

10

Blick auf die tintColor und tintAdjustmentMode Eigenschaften auf UIView dimmen wollen (verfügbar seit iOS 7) und die tintColorDidChange Methode.

Wenn Sie sie in Ihrer benutzerdefinierten Ansicht überschreiben, können Sie darauf reagieren, dass sie abgeblendet sind.

Als iOS 7 UI Transitioning Guide sagt:

Wenn eine Warnung oder Aktion Blatt erscheint, iOS 7 automatisch mit dem der Farbton der Ansichten dahinter dimmt. Um auf diese Farbänderung zu reagieren, sollte eine benutzerdefinierte Ansichtsunterklasse, die in ihrem Rendering tintColor verwendet, tintColorDidChange überschreiben, um das Rendering bei Bedarf zu aktualisieren.

Die Lösung kann wie folgt aussehen:

- (void)tintColorDidChange { 

    self.titleLabel.textColor = self.tintColor; 

} 
+0

danke, entpuppte sich als eine Zeile Codeänderung =) –

+0

@PeterLapisu danke für die Bearbeitung –

2

Während die akzeptierte Antwort mir geholfen hat, war das Ergebnis, dass die gedimmte Farbe meiner Kontrolle angewandt wurde, auch wenn der Bildschirm nicht abgedunkelt wurde. Ich reparierte dies auf folgende Weise:

override func tintColorDidChange() { 
    switch tintAdjustmentMode { 
    case .Dimmed: 
     myLabel.textColor = UIColor.grayColor() 
    default: 
     myLabel.textColor = UIColor.blueColor() 
    } 
} 

Dies korrekt eine graue Farbe an die Steuerung gilt nur, wenn der Bildschirm gedimmt.