2012-05-24 2 views
10

So habe ich den folgenden Code die segmentierte Steuerhintergrundfarbe zu setzen:Einstellung Hintergrundbild von UISegmentedControl

UISegmentedControl * segmentedCtrl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 150, 35)]; 
[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
[segmentedCtrl insertSegmentWithImage:[UIImage imageNamed:@"icon-home.png"] atIndex:0 animated:NO]; 
[segmentedCtrl insertSegmentWithImage:[UIImage imageNamed:@"icon-star.png"] atIndex:1 animated:NO]; 

Alles außer dass gut funktioniert, wenn ich auf dem Segment klicken ich die blaue Taste hervorgehoben sehen. Wie deaktiviere ich dieses Highlight? Hier ist ein Screenshot von meinem Problem:

enter image description here

Antwort

14

UISegmentControl hat einen Teiler zwischen zwei Segmenten verweisen. Mit dem folgenden Code können Sie den Teilerhintergrund ändern.

[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_selected.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_normal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Dabei ist divider_selected.png ein Bild, das Sie für den ausgewählten Status verwendet haben. Wo als divider_normal.png ist ein Bild, das Sie für den Normalzustand verwendet haben.

Hope this helfen ....

+0

, was die Größe des Teilers Bild wäre ?? – Nil

+0

Ich hatte 5 × 56. In dieser Höhe kann variieren, entsprechend Ihrer Segmentkontrollhöhe. – Nandha

+0

Ich mache das, aber der Rahmen meines SegmentedCtrl wird um 5 Pixel vergrößert! Was mache ich falsch? Gibt es * Anforderungen * für das Teilerbild (wie Transparenz usw.)? – Gik

2

Stellen Sie Ihre gleichen Hintergrundbilder für den markierten Zustand:

[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
+4

das hat .. funktionierte nicht – adit