UISegmentedControl和UIAppearance的怪异行为

我通过应用程序委托中的这些语句来设置分段控件的外观。

[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_normal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalNormal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalSelected.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_SelectedNormal.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

结果很好。 当我select任何分段时,背景和分隔线设置正确(应用程序第一次启动时,默认select“分段”)。 当我select释放部分,你可以看到下面的一切看起来不错。

在这里输入图像说明

问题是,当我离开视图,然后回到视图(我存储选定的索引,并将其设置在viewDidLoad重新select段),分频器设置不正确的原因不明。

在这里输入图像说明

如果我点击AZ然后释放,它自行纠正。 只有当视图第一次加载时,才会出现此错误,并且选定的段是Release或AZ。 select“订单”并加载视图时,分隔线总是看起来很好。

图像大小:分隔符是2px宽(全部3个图像是相同的大小),每个背景是2px宽。

任何想法或指针将高度赞赏,我一直拉我的头发在过去10个小时试图find一个解决scheme没有可用。

这是UISegmentedControl的错误,我想。 您可以通过在延迟后设置所选段来解决此问题,以便控制时间自行绘制。 你甚至不必使用实际的延迟,就像这样:

 [self performSelector:@selector(setPreferences) withObject:nil afterDelay:0.0]; 

setPreferences更新了分段控件的值。