一. iPhone X 适配
1.iPhone X 屏幕上下有黑道,没有沾满全屏
解决办法:LaunchImage 中添加一个和iPhone X相关的启动图片
图片尺寸:1125 * 2436
Contents.json 中代码如下
{
"extent" :"full-screen",
"idiom" :"iphone",
"subtype" :"2436h",
"filename" :"1125_2436.png",
"minimum-system-version" :"11.0",
"orientation" :"portrait",
"scale" :"3x"}
2.页面布局细节
iPhone X 取消了 Home键,实现了高屏占比,所以默认 View 的区域是全屏幕
屏幕四周有圆角、顶部有“刘海”、底部有手势区域
注意:导航栏高度是 44 + 44
Safe Area 如下图 (红色区域) -(复制来源http://blog.csdn.net/chenyblog/article/details/77987751)
iOS11 以前,我们布局时,视图的 top 和 bottom 一般参照的是Top Layout Guide和Bottom Layout Guide
iOS11 以后,那两个参照已经deprecated(过时)了,而被Safe Area取代。
Safe Area要求最低支持iOS9.0 以此来解决下图问题
二. iOS 11 适配
1. tableview 出现现象,grouped类型,tableSectionheader/footer 的高度不受控制
解决办法:先实现view for SectionHeader/footer,默认不实现view不会走高度的代理
2.msaonry 布局例如:
table.mas_makeConstraints { (make) -> Void in
if #available(iOS 11.0, *) {
_ = make?.edges.mas_equalTo()(self.view.safeAreaInsets) // 安全区域
} else {
// Fallback on earlier versions
_ = make?.edges.mas_equalTo()(self.view)
}
}
3.iOS 11中ViewController的automaticallyAdjustsScrollViewInsets属性被废弃了,导致了这页面出现了透明导航栏布局问题
解决办法:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
4. navigationtitle, 上有searchbar
效果图:
5.tableview 布局问题
参考视频:https://developer.apple.com/videos/play/fall2017/201/
https://developer.apple.com/videos/play/fall2017/801/
未完待续。。。