Я custumizing всех сегментированных управлений в моем приложении с помощью следующей code.Initially я установить выбранный сегмент для индекса 2.UISegmentedControl неправильно dividerImage
Все отлично работает в IOS 6.While я тестировал приложение на IOS5, Я понял, что исходная настройка сегментированного элемента управления имеет ошибку. Разделительное изображение между выбранным и невыбранным состоянием не задано правильно. До этого он выглядит так.
Если я изменяю выбранные сегменты, нажав на сегментированный контроль, он работает нормально. Это очень странно. Что делать, чтобы предотвратить это странное поведение?
UISegmentedControl *localSegmentedControl = [[UISegmentedControl alloc] init];
if ([localSegmentedControl respondsToSelector:@selector(setBackgroundImage:forState:barMetrics:)]) {
UIImage *segmentUnselectedSelectedDivider = [UIImage imageNamed:@"segmentedControlSeperatorNS.png"];
UIImage *segmentSelectedUnselectedDivider = [UIImage imageNamed:@"segmentedControlSeperatorSN.png"];
UIImage *segmentUnselectedUnselectedDivider = [UIImage imageNamed:@"segmentedControlSeperatorNN.png"];
UIImage *segmentUnselected = [[UIImage imageNamed:@"barButtonPlain.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:0];
UIImage *segmentSelected = [[UIImage imageNamed:@"doneButton.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:0];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselectedDivider
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselectedDivider
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentUnselectedSelectedDivider
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
}
Возможный дубликат [странное поведение с UISegmentedControl и UIAppearance] (http://stackoverflow.com/questions/11183519/weird-behavior-with-uisegmentedcontrol-and-uiappearance) - мой ответ там работает. – jrturton