在iOS 7中使用iOS 6风格的分段控件?
在iOS 7中使用iOS 6风格的分段控件?
在iOS 7设备上,是否可能将分段控件显示为iOS 6版本的控件?我们还没有准备好进行界面重新设计,新的扁平化控件与我们的其他界面不协调。如果可能的话,最好保持iOS 6的样式。为了澄清,我正在使用iOS 6.1基本SDK进行编译。我知道这是对我的问题的“显而易见”的答案,但它不起作用。大多数其他UI元素通过这样做会显示为iOS 6样式,但是像UIAlertView和UIActionSheet一样,UISegmentedControl不会。然而,与UIAlertView和UIActionSheet不同,UISegmentedControls不像是一个“系统”项目;它们应该能够以iOS 6模式显示。编辑:我觉得如果我最终包含一张图片会很有帮助(可能从一开始就应该这样做)。然而,我提供的答案确实解决了这个问题。此外,回想起来,它看起来可能确实是iOS 6的样式,只是显示得太不正确,以至于看起来像iOS 7样式。
问题的原因是在iOS 7中,使用iOS 6样式的分段控件会导致图片显示不正确。解决方法是通过代码来修复分段控件中的图片显示问题。首先判断当前设备的版本是否小于7,如果小于7则不需要进行任何自定义操作。然后循环遍历分段控件的每个分段,获取该分段的图片并将其渲染模式设置为UIImageRenderingModeAlwaysOriginal。最后将修复后的图片重新设置到分段控件中。
此外,还有一个用户询问如何改变分段控件的大小。他尝试在viewDidLoad方法中进行修改,但没有生效。他还尝试在initWithNibName方法中进行修改,同样没有成功。另一位用户提到,iOS 7中的分段控件高度有所减小。他没有修复高度问题,但通过完全替换控件为bootstrap按钮来解决了这个问题。
还有一个用户提到,使用XCode 5和SDK 7会导致分段控件上的文本标签消失。
问题的原因是iOS 7中的UISegmentedControl
外观与iOS 6中的不同,而且在使用iOS 7 SDK时,默认情况下无法恢复到iOS 6样式。解决方法是在Interface Builder中将文件的打开版本设置为Xcode 4.6,这样可以恢复到iOS 6的外观。
具体的解决步骤如下:
1. 打开需要处理的Interface Builder文档;
2. 进入文件检查器(第一个检查器选项卡,有一个文档图标);
3. 在“Interface Builder Document”部分,将“Opens in”设置为Xcode 4.6。
作者认为这可能是一个bug,并且猜测可能无法通过代码创建的UISegmentedControl
实例来解决这个问题。这个问题可能与iOS 7中segmentedControlStyle
属性的废弃有关。
希望这篇文章能帮助到某些人,这是在iOS 7中保持iOS 6样式的最佳解决方案。