iOS11适配iPhoneX总结

屏幕尺寸相关变化

高度增加了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划不到底部,

有些地方说的不到位,还请各位看官指正。。。

  • 欢迎各位一块学习,提高逼格!
  • 也可以添加洲洲哥的微信公众号

可以来微信公众号(洲洲哥)后台给我们留言。 快来扫码关注我们吧!

公众号二维码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值