iOS11以及iPhone X遇到的相关问题
来源:互联网 发布:排列组合c的快速算法 编辑:程序博客网 时间:2024/05/16 15:18
点击上方“iOS开发”,选择“置顶公众号”
关键时刻,第一时间送达!
还没有开始适配之前,就已经听身边的程序猿伙伴在为iPhone X的刘海和HomeBar的存在而纷纷吐槽了。说的我都有些怕怕,胆子小,哈哈哈。下面针对在整理过程中发现的适配注意点进行简单总结。
一、iOS11
1、iOS11新增版本判断API
2、MJRefresh上拉刷新死循环
3、访问相册权限变更
4、UITableView相关适配
二、iPhone X
1、iPhone X尺寸
2、iPhone X上下显示黑条问题
3、导航栏适配
4、安全区域问题
5、上传警告问题
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的营销图标只是有警告, 现在上传的时候也是有警告的, 只不过现在提交审核的时候直接不能提交审核!
作者:肉肉要次肉
链接:http://www.jianshu.com/p/72a5519a371b
iOS开发整理发布,转载请联系作者授权
【点击成为安卓大神】
- iOS11以及iPhone X遇到的相关问题
- iOS11以及iPhone X遇到的相关问题
- iOS11 和 iPhone X 的适配
- iOS11和iPhone X的适配
- 适配iOS11&iPhone X
- iOS11适配 以及会遇到的坑
- iOS开发 iOS11遇到的问题
- iOS11和iPhone X适配
- iOS11及iPhone X适配
- iOS11、iPhone X、Xcode9 适配
- iOS 适配iOS11、iPhone X
- [绍棠] iOS11和iPhone X的适配
- iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配
- iOS11 & iPhone X 适配指南
- iOS11 & iPhone X 适配指南
- iOS11人机交互指南-01 iPhone X概览
- iOS11-&-iPhone-X-适配之路
- iOS11 & iPhone X 适配指南
- ERP报表网格分组思路
- 数组、ArrayList、List<T>区别和选择
- Maven中POM.XML详解(1)
- Uncaught SyntaxError: Unexpected token o in JSON at position 1
- ASP.NET分析器错误消息: 未能加载类型的问题“ComradeSoft.Base.Admin.Login”?
- iOS11以及iPhone X遇到的相关问题
- 三 调试 Progressive Web Apps
- nginx+tomcat 配置负载均衡
- spark Streaming编写一个WorldCount的例子
- 添加分割线
- JavaScript概述
- const、&在定义函数返回的作用及接收返回变量的类型
- Hitchhiker:原创开源API协作测试工具
- JSON.stringify使用