Ase*_* H. 5 uisegmentedcontrol ios uiappearance
我通过app委托中的这些语句设置分段控件的外观.
[[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];
Run Code Online (Sandbox Code Playgroud)
结果很好.当我选择任何段时,背景和分隔线设置正确(当应用程序首次启动时,默认选择订单段).如下所示,当我选择Release段时,一切看起来都很好.

问题是当我离开视图然后回到视图(我存储选定的索引并将其设置在viewDidLoad中以重新选择片段)时,由于某种未知原因,分隔符设置不正确.

如果我点击AZ然后释放,它会纠正自己.仅当视图首次加载且所选段为Release或AZ时,才会出现此错误.选择"顺序"并加载视图时,分隔符始终显示正常.
图像尺寸:分隔线宽2px(所有3个图像尺寸相同),背景宽2 px.
任何想法或指示都会受到高度赞赏,过去10个小时我一直在努力寻找无法获得的解决方案.
我认为这是UISegmentedControl的一个错误.您可以通过在延迟后设置选定的段来解决它,以允许控制时间自行绘制.你甚至不必使用实际的延迟,例如:
[self performSelector:@selector(setPreferences) withObject:nil afterDelay:0.0];
Run Code Online (Sandbox Code Playgroud)
其中setPreferences更新分段控件的值.
| 归档时间: |
|
| 查看次数: |
2079 次 |
| 最近记录: |