屏幕尺寸相关变化
高度增加了145pt,变成812pt. 状态栏高度由20pt变成44pt,留意这个距离就能避开“刘海”的尴尬,相应的导航栏以上变化64->88。 底部工具栏需要为home indicator留出34pt边距。 物理分辨率为1125px * 2436px. 启动图的适配
通过LaunchScreen.storyboard方式启动
如果启动图原来使用的Assets中的LaunchImage
给Brand Assets添加一张1125*2436大小的图片
打开Assets.xcassets文件夹,找到Brand Assets 右键Show in Finder 添加一张1125*2436大小的图片 修改Contents.json文件,添加如下内容
{ "extent" : "full-screen", "idiom" : "iphone", "subtype" : "2436h", "filename" : "1125_2436.png", "minimum-system-version" : "11.0", "orientation" : "portrait", "scale" : "3x" } 再次启动App就可以看到全屏显示了
App内部样式适配
在适配之前先介绍下viewSafeAreaInsetsDidChange的调用顺序:
viewDidLoad
viewWillAppear
viewSafeAreaInsetsDidChange
▿ UIEdgeInsets
- top : 44.0
- left : 0.0
- bottom : 34.0
- right : 0.0 viewWillLayoutSubviews
viewDidAppear
只有在调用viewSafeAreaInsetsDidChange及以后的方法才能获得view和Controller的UIEdgeInsets。所以在viewDidLoad中根据Safe Area设置界面会有问题。
自定义导航栏的情况
会发现原来设置64高度的自定义Bar离刘海很近。原因就是iPhoneX下状态栏高度由20变成了44。
本人习惯用代码开发这里只介绍代码解决办法:
用代码来布局,弊端是原来用Storyboard布局的改成纯代码,累死程序员不偿命。方法就是在viewSafeAreaInsetsDidChange设置自定义bar的高度。
@available(iOS 11.0, *) override func viewSafeAreaInsetsDidChange() { navigationBarH = view.safeAreaInsets.top + 44 }
TableView、WebView、CollectionView等继承ScrollView的适配
原来的老项目中包含TableView、CollettionView的页面如果是使用Storyboard设置的约束,在iPhoneX中可能会有34像素的安全区域,scrollview划不到底部,
有些地方说的不到位,还请各位看官指正。。。
- 欢迎各位一块学习,提高逼格!
- 也可以添加洲洲哥的微信公众号
可以来微信公众号(洲洲哥)后台给我们留言。 快来扫码关注我们吧!