征服iOSiOS学习iOS技术资料

iPhoneX适配都在这儿了

2017-11-02  本文已影响23人  Cstars

屏幕特点

1. 3x scale

2.宽高   375 x 812 points   注意横屏时候,horizontalSizeClass 依然是 compact

3.屏幕多处圆角,以及感应器部位,屏幕底部有home switcher indicator(那条横线) 

内容排版注意事项:

1.内容排版时应将按钮及重要的内容避开圆角,感应器区域,home indicator.

2. 内容需要延伸至整个屏幕,不能空出,不能用色块遮挡,不得在indicator周围渲染特效。

3.自定义导航栏或tabBar不可设置为固定高度,否则会被感应器部位或 indicator遮挡。

4.尽量不要使用接近屏幕底部的上划手势,可能会与home switcher 冲突,若非要使用,可打开edge protection,此时回到主屏幕需要两个阶段的手势。 注意,app switcher 是iPhone X核心的操作体验,请尽量不要影响它的一致连贯性。

5.在某些情况下,可隐藏 home  indicator, 比如播放视频,当用户点击屏幕后才会出现,一会儿会自动隐藏, 要使用此功能,请打开auto-hide behavior. (UIViewController ->   override prefersHomeIndicatorAutoHidden, return true)

Apple 建议解决方案:

1.图标使用pdf, pdf可无损缩放(记得在 asset catalog勾选保留矢量数据选项)。免去2x,3x 图片,同时减小了app体积

2.若你使用UIKit标准控件,比如Navigation Controller , UITableView,系统已经为你做了适配,

navigationBar 会自动调整高度适配状态栏(x竖屏的状态栏高度44),cell的contentView 在横屏状态下左右各inset 44 points,竖屏为左右都为0,此功能可在xib或storyboard中关闭,也可用代码关闭。

3.若有自定义控件,使用auto layout 结合 safeArea。safeArea顾名思义定义了一个安全区域,它表示此区域不会被其他内容遮挡,比如navigationBar, statusBar, toolBar, tabBar,等等。

4.若有custom container ViewController,需要在Container的 viewDidAppear中设置子控制器的additionalSafeAreaInsets排除父控制器的overLay View(比如自定义navigationBar)

5.手动布局时,也可通过safeAreaInsets获取 safeArea的insets,注意要在viewDidAppear中或者之后获取,即在view添加到View Hierarchy后才能取到,否则都为0. (这带来一个问题,当viewDidAppear时,View已经显示了,若此时布局会有突然变化的效果,所以我还是乖乖的使用layout margin与auto layout 了,竖屏的话此时底部会有34point空间---貌似有点大,不过看多了就习惯了,横屏为21point)

6.当然了,通过粗暴的方式适配也不是不可以,你可以根据屏幕高度为812,直接判断为iPhone X,然后设置对应的约束。

上一篇 下一篇

猜你喜欢

热点阅读