美文网首页
ios 11 适配的问题

ios 11 适配的问题

作者: 面条168 | 来源:发表于2017-10-30 09:34 被阅读60次

    1.1、iOS11新增版本判断API

    iOS11版本现在有了简单的API,OC也开始支持swfit的@available语法,就可以不用再手写判断iOS版本了。

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

    // 版本适配

    }

    1.2、MJRefresh上拉刷新死循环

    self.tableView.estimatedRowHeight=150.0f;

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

    1.3、访问相册权限变更

    www.jianshu.com/p/cd0f814a7ce9

    1.4、UITableView相关适配

    www.jianshu.com/p/73394f7518c8

    2.1、iPhone X尺寸

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

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

    适配启动页入口

    2.3、导航栏适配

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

    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

    2.4、安全区域问题

    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.5、上传警告问题

    打好ipa包之后,收到苹果方的邮件是下面这个样子的。

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

    9月份上传的时候, 没有1024*1024的营销图标只是有警告, 现在上传的时候也是有警告的, 只不过现在提交审核的时候直接不能提交审核!

    2.6、适配 iPhone X Push 过程中 TabBar 位置上移

    解决问题

    在UINavigationController的基类重写pushViewController代理方法,在Push的时候修正一下TabBar的frame

    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

    {

    [super pushViewController:viewController animated:animated];

    // 修改tabBra的frame

    CGRect frame = self.tabBarController.tabBar.frame;

    frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.size.height;

    self.tabBarController.tabBar.frame = frame;

    }

    相关文章

      网友评论

          本文标题:ios 11 适配的问题

          本文链接:https://www.haomeiwen.com/subject/tafppxtx.html