无需为“11”和“22”状态提供分隔符图像,因为从逻辑上讲,您不能有 2 个相邻的选定段或 2 个相邻的突出显示段。好吧,只有同时点击相邻的部分才能突出显示它们,但不太可能。
因此,您应该有以下分隔线图像:
00, 01, 02
10, --, 12
20, 21, --
此外,您还应该为所有 3 个不同状态(正常、选定和突出显示)提供 3 个背景图像。这些背景图像的原因以及如何创建它们我已经在这里解释了(在那个解释中,我只使用了 2 个背景图像用于正常和选定状态,但如果你想使用突出显示状态,那么你需要添加第三个背景图像)。
这是显示这些图像如何在 UISegmentedControl 中使用的图表:
然后使用以下外观方法设置它们:
// Set background images
[segmentedControl setBackgroundImage:background_image_normal
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[segmentedControl setBackgroundImage:background_image_selected
forState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
[segmentedControl setBackgroundImage:background_image_highlighted
forState:UIControlStateHighlighted
barMetrics:UIBarMetricsDefault];
// Set divider images 0=Normal 1=Selected 2=Highlighted
[segmentedControl setDividerImage:divider_image_00
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault]
[segmentedControl setDividerImage:divider_image_01
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault]
[segmentedControl setDividerImage:divider_image_10
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault]
[segmentedControl setDividerImage:divider_image_02
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateHighlighted
barMetrics:UIBarMetricsDefault]
[segmentedControl setDividerImage:divider_image_20
forLeftSegmentState:UIControlStateHighlighted
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault]
[segmentedControl setDividerImage:divider_image_12
forLeftSegmentState:UIControlStateSelected
rightSegmentState:UIControlStateHighlighted
barMetrics:UIBarMetricsDefault]
[segmentedControl setDividerImage:divider_image_21
forLeftSegmentState:UIControlStateHighlighted
rightSegmentState:UIControlStateSelected
barMetrics:UIBarMetricsDefault]