自从升级到 iOS 6 后,我的所有 UISegmentedControl 都出现了显示问题,我对其进行了一些自定义。这就是它的样子。
在 iOS 5 上完全没有问题,如果我在 iPhone 4 (iOS 5) 模拟器中运行,它显示正确。
这是我正在使用的代码:
UIImage *segmentUnselected = [[UIImage imageNamed:@"segmentedcontrol"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentSelected = [[UIImage imageNamed:@"segmentedcontrol_selected"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault];
UIImage *segmentDivider = [UIImage imageNamed:@"segmentedcontrol_divider"];
[[UISegmentedControl appearance] setDividerImage:segmentDivider
forLeftSegmentState:UIControlStateNormal
rightSegmentState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentDivider
forLeftSegmentState:UIControlStateDisabled
rightSegmentState:UIControlStateDisabled
barMetrics:UIBarMetricsDefault];
我使用的图像应该没问题,它们有两种尺寸正常和@2x。告诉我你是否希望我提供一些细节。
[更新]
使用“正常” imageNamed:@"" 删除 cap inset 可调整大小的图像为我解决了这个问题。