2012-04-04 9 views
3

Ich verwende UIAppearance, um globale Stile für meine iOS-App festzulegen. Ich stelle mir einen hellgrauen Stil vor.Wie machst du das ausgewählte Segment eines UISegmentedControls dunkler?

[[UINavigationBar appearance] 
    setTintColor:[UIColor colorWithWhite:0.95 alpha 1.0] 
]; 

[[UISegmentedControl appearance] 
    setTintColor:[UIColor colorWithWhite:0.90 alpha 1.0] 
]; 

enter image description here

Das Problem ist, dass das ausgewählte Segment (UNO) der UISegmentedControl nicht viel dunkler als ein normales Segment (DOS). Das normale Segment ist bereits in der richtigen Dunkelheit, aber ich möchte nur das ausgewählte Segment verdunkeln, damit die Leute den Unterschied zwischen den beiden unterscheiden können. Verdunkelnde Tönung würde beide zur gleichen Zeit verdunkeln, so dass es nicht funktionieren wird.

Antwort

1

Der einfachste Weg ist, eine Liste der Unteransichten für einen segmentierten Controller zu durchlaufen und zu sehen, welche ausgewählt ist. Wenn Sie eine ausgewählte Unteransicht finden, müssen Sie die Tönungsfarbe dunkler einstellen.

Dies funktioniert jedoch nicht mit UIAppearance, ich glaube nicht, dass es auf dieser Ebene anpassbar ist.

+0

Ich Unterklasse UISegmentedControl. Wie kann ich innerhalb dieser Unterklasse auf ein Änderungsereignis warten und Ihren Beispielcode ausführen? Ich denke, es wäre sauberer für die UISegmentedControl, ihr eigenes Styling zu handhaben, anstatt dass der UIViewController auf Änderungen lauscht und dann dem UISegmentedControl sagt, dass es seinen Farbton ändern soll. – JoJo

+0

Vergesst nicht. Ich habe gerade gemerkt, dass es gegen Model-View-Controller-Paradigma ist, um Ereignisse zu verstehen. – JoJo

Verwandte Themen