2009-12-12 8 views
12

Der Farbton, der normalerweise auf einem UISegmentedControl auf der ausgewählten Schaltfläche angezeigt wird, wird nicht angezeigt, wenn ich die gesamte Navigationsleiste auf Schwarz (self.navigationController.navigationBar.tintColor = [UIColor blackColor];) einstelle.UISegmentedControl Gewählter Farbton wird nicht angezeigt

Ist das ein Fehler oder etwas, das ich vermisse?

Antwort

60

Damit die Tönungsfarbe, um zu zeigen, gibt es ein paar Anforderungen:

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 

es ist erforderlich für die tintColor zu arbeiten.

Sie erwähnen auch, dass Sie die tintColor auf [UIColor blackColor] festgelegt haben. Leider zeigt das UISegmentedControl immer das ausgewählte Segment mit einer dunkleren Farbe an, nie ein Feuerzeug. Versuchen Sie, Ihre tintColor auf [UIColor darkGrayColor] einzustellen, und Sie sollten in der Lage sein, die ausgewählte Segmentwechselfarbe zu sehen.

2

Haben Sie versucht, den Farbton der segmentierten Steuerung separat einzustellen?

segmentedControl.tintColor = self.navigationController.navigationBar.tintColor; 
2

Versuchen Sie es mit der Tönungsfarbe [UIColor colorWithWhite:80.0/255.0 alpha:1.0]. Dadurch wird die schwarze Farbe weniger schwarz und das ausgewählte Segment wird nach der Auswahl dunkler. Sie können die weiße Komponente als geeignet festlegen.

Beispielcode:

UISegmentedControl *aSegmentedControl = [[UISegmentedControl alloc] initWithItems:arrItems]; 
aSegmentedControl.frame = CGRectMake(55, 382, 210, 32); 
aSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
aSegmentedControl.selectedSegmentIndex = 0; 
aSegmentedControl.tintColor = [UIColor colorWithWhite:80.0/255.0 alpha:1.0]; 
2

auf dem iPhone 3.0, wenn Sie die segmentierte Kontrolle in einem Navigation hinzufügen möchten, tun Sie das erste und das tintColor ändern, nachdem u das tat.

+0

Das ist hilfreich, aber in meinem Fall habe ich das segmentierte Steuerelement in viewDidLoad in das Navitem gesetzt und dann sofort die Tönungsfarbe eingestellt. Ich musste feststellen, dass ich den tintColor-Satz auf ViewWillAppear verschieben musste und es schließlich funktionierte. – Jason

1

Ändern Sie den segmentierten Steuerungsstil im Attribute Inspector in Bar oder Bezeled. Das ist alles.

2

Wenn Sie in der Navigationsleiste unterschiedliche Farbtöne sehen, können Sie auch die Momentaneigenschaft Ihres Uisegmentedcontrols verwenden.

segmentedControl.momentary=YES;

Dies löscht die Highlight Tönung aus der Kontrolle.