我正在通过在应用程序委托中使用以下语句来设置分段控件的外观。
结果还不错。当我选择任何一个段(在应用程序首次启动时默认选择“订单”段)时,背景和分隔符都设置正确。如下图所示,当我选择“发布”段时,一切看起来都很好。
问题是当我离开视图然后返回视图时(我存储所选索引并在viewDidLoad中设置它以重新选择段),由于某种未知原因,分隔符被设置错误。
如果我先点击A-Z,再点击Release,则会自动纠正。此错误仅在视图首次加载且选择的段为Release或A-Z时才会发生。当选择Order并加载视图时,分隔符始终看起来很好。
图像尺寸:分隔符宽2像素(所有3个图像尺寸相同),背景每个宽2像素。
非常感谢您提供任何想法或指针,我已经花了过去10个小时试图找到解决方案但一无所获。
[[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];
结果还不错。当我选择任何一个段(在应用程序首次启动时默认选择“订单”段)时,背景和分隔符都设置正确。如下图所示,当我选择“发布”段时,一切看起来都很好。
![enter image description here](https://istack.dev59.com/c6FG6.webp)
![enter image description here](https://istack.dev59.com/avgMA.webp)
图像尺寸:分隔符宽2像素(所有3个图像尺寸相同),背景每个宽2像素。
非常感谢您提供任何想法或指针,我已经花了过去10个小时试图找到解决方案但一无所获。
viewDidLoad
中设置UISegmentedControl
的选中索引后,调用UISegmentedControl
的setNeedsDisplay
方法。也许这样可以解决问题。 - Zeus Alexander