我在带有自定义背景/分隔线图像的 UIToolbar 中有一个 UISegmentedControl。通过 iOS 6,这可以正确显示,但从 iOS 7 开始,所选片段将该片段的前景图像显示为剪切图(显示下方的工具栏),而不是其他片段显示为白色。
关于我是否缺少某些东西以使其按预期运行的任何想法?
在任何人说之前,我不会使用默认的 iOS 7 UISegmentedControl 外观,因为我觉得它很可怕。
我在带有自定义背景/分隔线图像的 UIToolbar 中有一个 UISegmentedControl。通过 iOS 6,这可以正确显示,但从 iOS 7 开始,所选片段将该片段的前景图像显示为剪切图(显示下方的工具栏),而不是其他片段显示为白色。
关于我是否缺少某些东西以使其按预期运行的任何想法?
在任何人说之前,我不会使用默认的 iOS 7 UISegmentedControl 外观,因为我觉得它很可怕。
没关系。我在发帖后不久就想通了。
UISegmentedControl
UIImageRenderingModeAlwaysTemplate
除非另有说明,否则将其图像解释为处于渲染模式。
我必须[UIImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
在每个段的图像上使用 -iOS 7
来实现以前的行为。
使用此代码在带有 xCode 5 的 iOS 7 中的 Segment Control 上设置图像
if ([UIImage instancesRespondToSelector:@selector(imageWithRenderingMode:)]) {
[segmentControl setImage:[[UIImage imageNamed:@"image.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forSegmentAtIndex:0];
}
else {
[segmentControl setImage:[UIImage imageNamed:@"image.png"] forSegmentAtIndex:0];
}