ios, iOS11适配,iphoneX适配

一. 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)


ios, iOS11适配,iphoneX适配_第1张图片

iOS11 以前,我们布局时,视图的 top 和 bottom 一般参照的是Top Layout Guide和Bottom Layout Guide

iOS11 以后,那两个参照已经deprecated(过时)了,而被Safe Area取代。

Safe Area要求最低支持iOS9.0    以此来解决下图问题

ios, iOS11适配,iphoneX适配_第2张图片


二. 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属性被废弃了,导致了这页面出现了透明导航栏布局问题


ios, iOS11适配,iphoneX适配_第3张图片

解决办法:

if (@available(iOS 11.0, *)) {

self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

} else {

self.automaticallyAdjustsScrollViewInsets = NO;

}

4. navigationtitle, 上有searchbar

效果图:

ios, iOS11适配,iphoneX适配_第4张图片
ios, iOS11适配,iphoneX适配_第5张图片
ios, iOS11适配,iphoneX适配_第6张图片

5.tableview  布局问题


ios, iOS11适配,iphoneX适配_第7张图片
ios, iOS11适配,iphoneX适配_第8张图片



参考视频:https://developer.apple.com/videos/play/fall2017/201/

https://developer.apple.com/videos/play/fall2017/801/

未完待续。。。

你可能感兴趣的:(ios, iOS11适配,iphoneX适配)