在iOS软件的开发过程中,无论是在开发API的使用上还是在系统界面的设计布局上都离不开版本设备之间的适配问题。
只有合理的处理好软件系统在不同移动终端的适配问题才能提高用户体验度,更好的获取用户。
简单的谈谈系统在兼容IOS6和IOS7时的问题:
1)坐标设定问题:以屏幕左上角为原点(iOS7以前在状态栏或者导航条下)。
适配的部分实现代码如下:
判断当前IOS设备的系统版本
对IOS6和IOS7的设备分别做不同的坐标处理
2)隐藏顶部状态栏问题:IOS6隐藏状态栏时,原来状态栏的位置会出现空白部分。IOS7及其以后的版本页面视图会上调,覆盖原来状态栏的位置。
适配的部分实现代码如下:
进入页面时,隐藏顶部状态栏
进入页面时,适配IOS6
另外上面需要注意的是,导航条的优先级高于状态栏的。所以,如果调整视图位置的时候使用self.view.frame = frame. 这样是没有
效果的,状态栏原先的空白区域依然存在。必须对导航条当前的视图操作才有效:self.navigationController.view.frame = frame.这样
才能覆盖状态栏原先的空白区域。
退出页面时,适配IOS6
3)IOS7的边沿延展新特性。在IOS7下,控制器的视图会被导航条掩盖住。IOS6则不会出现这类问题。
适配的部分实现代码如下:
取消IOS7的边沿延展特性
4)IOS7界面自动布局特性。在系统的XIB视图文件中将布局配置UseAutoLayout选项取消勾选。
另外,在处理IOS系统版本的适配问题上,应该将一些处理视图类的特征适配抽象到处理的基类中。方便代码的重构和扩展。比如写一个继承ViewController类的子类CustomViewController,将处理IOS7边沿自扩展特性的代码点封装进去。也可以在CustomViewController其封装定制自己的导航条特性。比如定制导航条的背景图,导航条的返回按钮样式等。