关于 iOS11的一些适配问题

1.当我们将开发工具升级到 Xcode9.0以上的时候首先需要做的是如下工作:

①.放入一张1024pt 的 AppIcon



②.添加一张 iPhone x 的启动图,规格如下:


2.Tableviw 适配问题

automaticallyAdjustsScrollViewInsets经常被设置成NO,由开发者去控制处理留白和坐标问题, 但是iOS11后automaticallyAdjustsScrollViewInsets = NO这句代码失效。iOS 11后,把这个automaticallyAdjustsScrollViewInsets废弃,新增了contentInsetAdjustmentBehavior,这个属性是个枚举类型值,我们只需要把其设置成never就行了,解决tableView偏移的问题, 我们可以对对 tableView 进行如下设置:

if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}

3.禁止屏幕滑动返回

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    // 禁用返回手势
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
    {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
}
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
    {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }

4.MJRefresh上拉刷新死循环

self.tableView.estimatedRowHeight=130;
130这个数值是cell的平均高度,如果estimatedRowHeight设置非常小,MJRefresh的KVO会监听错误的contentoffset,就会造成循环上拉加载操作.

5.导航栏适配

导航栏新增了一种大标题样式,默认设置是不开启,所以不需要修改。
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[[UIApplication sharedApplication] 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

推荐阅读更多精彩内容

  • 1.1、iOS11新增版本判断API iOS11版本现在有了简单的API,OC也开始支持swfit的@availa...
    面条168阅读 218评论 0 1
  • 导航栏 导航栏高度的变化 iOS11之前导航栏默认高度为64pt(这里高度指statusBar + Navigat...
    西门淋雨阅读 434评论 0 0
  • 信息:实现按IP端添加服务器 思考: ,HostForm reducer 行动:指导wuhui 信息:伏牛堂的中餐...
    黑知更鸟阅读 126评论 0 0
  • 不知不觉反思日记已经写了30篇了。说好给写满30天做一个总结的,明天执行。 那天学习古典老师的超级个体,知道了拖延...
    晓茜插画阅读 83评论 0 0
  • 家有两宝,一个在幼儿期,另一个在儿童期,每个年龄段的孩子需求不同,而妈妈得依据孩子的需求切换着自己的角色。...
    Alice林阅读 55评论 0 0