iOS 11,新特性,安全区

在iOS11出来之后,,对iOS 来说改变最大的就是安全区,就是刘海的问题,在这块对于iOS新的特性

iPhone X尺寸

iOS 11,新特性,安全区_第1张图片

APP启动页,即LaunchImages,需要五张不同尺寸大小的图,切记一定要选择png格式,否则打包时报错,导致APP适配失败。

六张图的大小即:320×480、640×960、640×1136、750×1334、1242×2208、

1125*2436

分别对应的iphone屏幕尺寸:iphone 3GS、iphone4(s)、iphone5(c、s)、iphone6/7/8(s)、iphone 6/7/8(s) plus、iPhoneX

具体步骤:

Step1:

1.点击工程目录中的Images.xcassets/Assets.xcassets,点击左侧边栏的LaunchImages(如果没有,在空白处右击创建一个)

2.然后在xcode最右侧的边栏处选择你的APP是否要对ipad、横竖屏、以及低版本的iOS系统做支持。



iOS 11,新特性,安全区_第2张图片

iOS 11之前,

automaticallyAdjustsScrollViewInsets经常被设置成NO,由开发者去控制处理留白和坐标问题, 但是11+automaticallyAdjustsScrollViewInsets = NO这句代码失效。

iOS 11后,

把这个automaticallyAdjustsScrollViewInsets废弃,新增了contentInsetAdjustmentBehavior,这个属性是个枚举类型值,我们只需要把其设置成never就行了

解决tableView偏移88的问题,  我们可以对对 tableView 进行如下设置:

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

self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

} else {

self.automaticallyAdjustsScrollViewInsets = NO;

}



2、导航栏适配

导航栏新增了一种大标题样式,默认设置是不开启,所以不需要修改。

iOS 11以前,导航栏的高度是64,其中状态栏statusBar的高度是20,底部tabbar的高度是49。

iOS 11之后,iPhoneX的导航栏的高度是88,其中状态栏的statusBar的高度变成了44, 底部的tabbar变成了83。

iPhoneX的底部增加了虚拟Home区,由于安全区域的原因默认tabBar的高度由49变为83,增高了34,所以自定义的底部TabBar也需要需改其适配方案。

目前我们项目没有自定义底部TabBar, 则先不考虑吧, 先来考虑关于navi 在 iPhone X 上是88的问题.

目前没发现有iPhoneX的机型判断API,建议使用size来做代替判断。

#definekStatusBarHeight[[UIApplicationsharedApplication] statusBarFrame].size.height

#define kNavBarHeight 44.0

#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)//tabBar高

#define kTopHeight(kStatusBarHeight + kNavBarHeight)//导航栏高

//判断iPhoneX

#define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

#defineiPhoneX[[UIScreenmainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone

3、iPhone X上下显示黑条问题

运行Xcode9.0的iPhoneX模拟器, APP在iPhoneX屏幕没填充满,上下有黑色区域,这是因为app之前未用LaunchScreen.Storyboard作为启动页面,可以使用LaunchScreen来当做入场页面,这样APP才会自动适配为iPhoneX的大小。我的项目中是用Assets中的LaunchImage, 这样就可以修改Assets中的LaunchImage,添加iPhoneX的Launch图(1125*2436)


iOS 11,新特性,安全区_第3张图片

更新适配版本时 iPhone X 的启动图适配加上了, 千万别忘了也要传 Icon. 否则就会有上传版本时会有提示警告滴

4、MJRefresh上拉刷新死循环

self.tableView.estimatedRowHeight=150.0f;

150这个数值是你cell的平均高度,如果estimatedRowHeight设置非常小,MJRefresh的KVO会监听错误的contentoffset,造成不停进行上拉加载操作。

你可能感兴趣的:(iOS 11,新特性,安全区)