升级Xcode9,适配iOS11以及iPhoneX的规范

        每年都要经历一次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打出来的包,获取运动权限的时候,提示不出来。

你可能感兴趣的:(升级Xcode9,适配iOS11以及iPhoneX的规范)