Anpassen UISegmentedControl, Hintergrundbild hinzufügen und ausgewählte segment Farbe
Dublicate von diese, sondern seine nicht funktioniert für mich.
Habe ich erstellt UISegmentedControl mit UICatalog und versucht zu ändern, das ausgewählte segment Farbe. Ich habe verwendet,diese, um Farbe zu ändern. Das Hintergrundbild funktioniert aber nicht ändern das ausgewählte segment Farbe. Welche änderungen sollte ich machen? Oder anderen Ansatz für dasselbe? Mein code unten.
NSArray *segmentTextContent = @[@"First",@"Second",@"Third"];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTextContent];
segmentedControl.frame = CGRectMake(20, 50, 280, 30);
[segmentedControl addTarget:self
action:@selector(segmentAction:)
forControlEvents:UIControlEventValueChanged];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 1;
segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[segmentedControl setBackgroundImage:[UIImage imageNamed:@"navigationBar"]
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[segmentedControl setDividerImage:[UIImage imageNamed:@"divider"]
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
//we want attributed strings for this segmented control
NSDictionary *textAttributes = @{ UITextAttributeTextColor:[UIColor whiteColor],
UITextAttributeFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:13] };
[segmentedControl setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
textAttributes = @{ UITextAttributeTextColor:[UIColor whiteColor],
UITextAttributeFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:13] };
[segmentedControl setTitleTextAttributes:textAttributes forState:UIControlStateHighlighted];
[self.view addSubview:segmentedControl];
- (void)segmentAction:(UISegmentedControl *)sender
{
for (int i=0; i<[sender.subviews count]; i++) {
if ([[sender.subviews objectAtIndex:i]isSelected]) {
UIColor *tintcolor = [UIColor greenColor];
[[sender.subviews objectAtIndex:i] setTintColor:tintcolor];
} else {
[[sender.subviews objectAtIndex:i] setTintColor:nil];
}
}
}
InformationsquelleAutor Ameet Dhas | 2013-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
setBackgroundImage:forState:barMetrics:
mitUIControlStateSelected
als der Staat.InformationsquelleAutor nevan king
In iOS 7 mit dem neuen Verhalten der tintColor, versuchen Sie stattdessen die Farbe des Hintergrunds. Dies wird sich ändern Sie den text Farbe des segmentedControl, wenn es ausgewählt ist.
Fügen Sie diese Zeile, bevor Sie die segmentedControl zu der Ansicht:
So brauchen Sie nicht mehr:
Beachten Sie, dass die Hintergrundfarbe der ausgewählten segmentedControl wird sich auch ändern. Aber wenn Sie benutzerdefinierte Bilder, Sie werden es nicht sehen.
Hoffe, das hilft.
InformationsquelleAutor André Rodrigues
Für UISegmentedControl Sie können diesen code verwenden,
Hintergrund Bild
InformationsquelleAutor Peggy Walton