每年都要经历一次Xcode的升级,意味着编译器sdk的升级,有时候编译器变化小,有时候变化大,今年是个大年,适配任务异常繁重。主要包括以下几个地方。
1,NavigationBar
导航条上BarItem和titleView的布局都发生了变化。都要适配。
1.1 BarItem
使用xcode9,需要兼容iOS 11和之前的系统,需要写两套代码,通过系统版本号来区分。
1.2 titleview
使用xcode9之后,titleview最好采用自定义view,添加一个可写的属性intrinsicContentSize。然后在使用titleview的时候,设置它的intrinsicContentSize。
2,SafeArea。
安全区域。由于iPhoneX的存在,苹果给出了一个安全区域的解决方案。具体指的是NavigationBar以下,Tabbar以及iPhoneX的底部34以上。
可以定义几个宏,用户定义TopNaviHeight,BottomTabbarHeight,BottomHeight,判断条件以是不是iPhoneX为条件。
在写controller的时候,由于iPhoneX的存在,不能直接在controller的view上,添加自己写的view,最好包装一层view,这一层包装的view的范围就是安全区域的大小,它的约束结合上面几个宏就可以确定。然后,我们在这个包装的view上进行代码布局。
3,automaticallyAdjustsScrollViewInsets
iOS11里面这个属性废弃了。从开发的角度来说,一个字,无论这个属性变成什么样,都把它们禁掉。
4,iPhoneX
主要是安全区域的问题,前面已经阐述过。
5,位置权限
info.plist里面要增加对NSLocationAlwaysAndWhenInUseUsageDescription的描述,否则Xcode9打出来的包,获取运动权限的时候,提示不出来。