iPhone X适配以及iOS 11可能出现的常见崩溃(info.plist配置)
2017-12-04 10:30
736 查看
iPhone X适配
程序启动图,引导图等
iPhone X像素尺寸1125x2436,也就是说,你的启动图或者是闪屏页,App引导图等得新加一个图了,另外iPhone X用的是三倍图,开发用的逻辑分辨率即为375x812,可见iPhone X的宽度是和4.7尺寸一样的,只不过高度增加许多,程序启动页,可以专门为iPhone X增加(如下图),但App的其他页面,比如整个页面的背景图,自己做的引导页等就需要UI新给一张1125x2436的图,我的做法是在代码中对iPhoneX加载这张新图,把这张新图放在原背景图等的三倍图位置上,因为原来的三倍图是适配5.5寸的,避免图被拉伸。
程序启动页(选择好之后,自然会多出选择iPhone X的程序启动页的一项)
引导图或背景图等
安全区
说到iPhone X适配问题,也得和大家解释一下安全区的概念,请看下图(此图来自莫贝网,发布者mobileui,在此十分感谢),绿色部分即是安全区,也就是我们开发时所使用的区域下面详细介绍一下非安全区域的尺寸如下图(此图来自莫贝网,发布者mobileui,在此十分感谢)
如何适配顶部和底部
我们适配好程序启动页之后,会发现导航栏和小刘海灰常近,我们需要调整一下导航栏+状态栏高度了,原来偶们都是统一64,而现在估计要重新写个宏了改为88,KDeviceHeight = 812 ? 88 : 64 ; 底部适配的话,注意距离底部34(逻辑分辨率)就好,至于tabBar的话,还是根据不同产品需求而定。如何禁止scrollView的自动偏移64像素
原来我们只需要设置automaticallyAdjustsScrollViewInsets=NO就可以了,iOS 11之后
if (@available(iOS11.0, *)) {
self.scrollView.contentInsetAdjustmentBehavior
= UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets =NO;
}
关于info.plist
关于定位服务。原有的NSLocationAlwaysUsageDeion改为NSLocationWhenInUseUsageDeion,因此,在原来项目中使用requestAlwaysAuthorization获取定位权限,而未在plist文件配置NSLocationAlwaysAndWhenInUseUsageDeion,系统框不会弹出。建议新旧key值都在plist里配置。关于相册服务。原来的Privacy - Photo Library Usage Description 改为 Privacy - Photo Library Additions Usage Description,建议新旧key值都在plist里配置。
关于Xib和StoryBoard适配
如果你只需要适配iOS 9以上的恭喜你,你可以直接在右边打开安全区,直接做适配即可如果不是的话,那就有点麻烦了,我是这样来做的,将需要进行iPhone X的约束拖出来,如下图
(按住control,直接拖即可)
代码也需要进行补充,如下,此时你该多注意是否超过了下边的安全区
if (KDeviceHeight ==812) {
self.navBgViewHeightConstraints.constant =88;
self.tipLabelHeightConstraints.constant +=24;
[self updateViewConstraints];//这句加不加都不会影响效果。。。。
}
关于webView的适配
适配好导航栏,你也把webView扩充到整个屏幕,可能会发现这样的问题,webView内部的tabBar下边会露出一块内容解决方案有两种:
plan A:要h5前端去适配iPhone X
plan B:我们将webView去缩减回原来的高度,也就是
[UIScreen mainScreen].bounds.size.height - 88 -
34
底部34的高度就靠我们自己写一个view来做修补,
记得webView进入二级网页时,要把这个view隐藏,并给webView的高度增加34
if (@available(iOS11.0, *)) {
self.webView.scrollView.contentInsetAdjustmentBehavior
= UIScrollViewContentInsetAdjustmentNever;
}
另外,如果webView出现自动调整64的情况,可通过
if (@available(iOS 11.0, *)) {
self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
实现。
相关文章推荐
- iOS-关于环信的ATS配置,info.plist的添加以及项目中apple mach-o linker error
- iOS开发 - Info.plist文件的常见配置
- iOS中Info.plist文件的常见配置
- iOS 11以及iPhone X的适配(转)
- iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配
- iOS中Info.plist文件的常见配置
- 【iOS开发-2】Info.plist文件的初步窥探:如何增减配置以及如何用代码调用里面的值
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
- iOS 如何适配iOS 11 && IPhone X 资料
- iOS 11 与 iPhone X的适配那些事
- iOS巅峰之iPhone适配的相关内容以及机型适配时的注意事项
- ios 11和iphone x的相关适配问题及解决方法
- iOS 11 & iPhone X 适配资料集
- APICloud率先适配iOS 11,以及APP开发者需知的4个关键特性
- iPhone X、iOS 11 、Xcode9,适配,布局,API
- IOS APP配置 info.plist汇总
- IOS访问HTTP时,info.plist的代码配置
- iOS学习笔记37-iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单
- IOS学习笔记62--ios info plist配置说明
- 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏