iOS11 适配方案调研

iOS11 适配方案调研

一:内容介绍

明确需要适配部分:

1.导航栏

2.滑动view (UIScrollView、UITableView、UICollectionView  )

3.iPhoneX

4.相册权限

不明确部分:

1.iPhone X 上下导航栏是否需要重新设计

2.iPhone X 上下导航栏真机实际适配效果

3.弹框视图加载到keywindow与当前页面最上层视图的细微区别不明确。因为xcode9 iOS11 所有弹框都加到keywindow才正常。iOS11及xcode9以下,有时候弹框加到keywindow上面,会有异常。就是弹框不出现。

二:具体适配项

1.导航栏及所有Bar适配

(1)导航栏高度的变化

iOS11之前导航栏默认高度为64pt(这里高度指statusBar + NavigationBar),

iOS11之后如果设置了prefersLargeTitles = YES则为96pt,默认情况下还是64pt。

在iPhoneX上出现statusBar由以前的20pt变成了44pt,所以iPhoneX上高度变为88pt。

(2)导航栏(UINavigationBar UIToolbar)图层结构改变

iOS11之前导航栏的leftButton rightButton  titleView 是直接添加在UINavigationBar及UINavigationItemView上面,并且使用的是frame布局的。

iOS11之后,视图层级发生了变化,leftButton rightButton  titleView并不是直接添加在UINavigationBar或者UINavigationItemView上面,而是在他们外面嵌套了一个UIButtonBarStackView,而StackView并不是使用的frame,而是用的约束来布局,这里必须得用 AutoLayout 进行布局。

(3)上下导航栏中,纯代码写死的高度需要修改

发现项目中,很多地方有写死的上下导航栏高度。比如 64(导航栏+状态栏) 44(上导航栏) 49(下导航栏)

2.滚动视图适配 (UIScrollView、UITableView、UICollectionView)

A:视图偏移问题

xcode9,iOS11 之后,新引入safeArea(安全区),当我们设置过automaticallyAdjustsScrollViewInsets这个属性之后,在iOS11设备上运行这些滚动视图会偏移64pt,主要是iOS11弃用了automaticallyAdjustsScrollViewInsets属性,新增了contentInsetAdjustmentBehavior属性,

B.tableView在iOS11默认使用Self-Sizing,tableView的estimatedRowHeight、estimatedSectionHeaderHeight、 estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension(是一个大于0的具体值),这会造成sectionHeader、sectionFooter 留白 也就是高度与设置不符合。

C. 如果使用了Masonry 进行布局,就要适配safeArea(安全区),否则超出安全区之后,界面混乱。

3.iPhone X 适配

(1)LaunchImage

由于我们项目中,启动图使用的是LaunchImage,所以需要尺寸为1125x2436的启动图适配iPhone X

(2)TabBarController

主要是tabBar高度及tabBarItem偏移适配,iPhoneX由于底部安全区的原因UITabBar高度由49pt变成了34pt,所以,这块适配是否需要重新设计UI界面?

在iPhoneX上出现statusBar由以前的20pt变成了44pt,所以iPhoneX上高度变为88pt。

4.相册权限

相册权限需要增加,不然可能会造成闪退

增加info.Plist中的字段:

之前的这个字段:Privacy - Photo Library Usage Description

需要增加这个字段Privacy - Photo Library Additions Usage Description

三:适配预估时间

目前预估2.5个工作日左右

你可能感兴趣的:(iOS11 适配方案调研)