iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配

九路 等级 819 0 0
标签: iphoneiosSwift

1.UITableView滑动时右侧的滑动条忽长忽短的乱跳以及MJRefresh上拉刷新死循环

这是因为tableView在iOS11默认使用Self-Sizing,tableView的estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension,MJRefresh的KVO会监听错误的contentoffset,造成不停进行上拉加载操作,

解决方法可以再全局里面将上面3个属性的默认值设置为0即可

UITableView.appearance.estimatedRowHeight = 0;
UITableView.appearance.estimatedSectionFooterHeight = 0;
UITableView.appearance.estimatedSectionHeaderHeight = 0; 

2.在iOS 11中tableview的contentsize默认下移了64高度

在iOS 11中UIViewCOntroller的 automaticallyAdjustsScrollViewInsets 属性被废弃了取而代之的是UIScrollVIew的contentInsetAdjustmentBehavior属性,同样的也可以更改默认的值

if (@available(iOS 11.0, *)) {
    UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
    // Fallback on earlier versions
    self.automaticallyAdjustsScrollViewInsets = NO;
} 

然而这样写在调用相册的时候当推出系统相册的时候将系统页面contentSize的下移取消掉了导致出现了大问题,所以又将上面的默认值去掉在特定的界面修改即可

3.项目在iPhone X上运行时上下都有巨大的黑边

解决方法:因为项目中是用Assets中的LaunchImage, 这样就可以修改Assets中的LaunchImage,添加iPhoneX的Launch图(1125*2436)即可,但是

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

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

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

本文来自:http://www.cocoachina.com/ios/20171031/20999.html

收藏
评论区

相关推荐

Swift开发-OC与Swift混编以及纯Swift编码所遇到的问题(一)
前言: 最近一段时间比较忙,公司项目比较多,直到现在年后过来以 后总结一下之前项目中遇到的问题,以及自己使用Swift开发所遇到的坑。现在大家都知道Swift已经渐渐趋于完善,以后很有可能会替代ObjectC成为主流的iOS开发语言,所以各位以后还想从事iOS开发的程序猿(媛)们,早作准备吧! 今天我们主要说一下ObjectiveC和Swift混编
Swift开发-OC与Swift混编以及纯Swift编码所遇到的问题(一)
前言: 最近一段时间比较忙,公司项目比较多,直到现在年后过来以 后总结一下之前项目中遇到的问题,以及自己使用Swift开发所遇到的坑。现在大家都知道Swift已经渐渐趋于完善,以后很有可能会替代ObjectC成为主流的iOS开发语言,所以各位以后还想从事iOS开发的程序猿(媛)们,早作准备吧! 今天我们主要说一下ObjectiveC和Swift混编
iOS 11更新后以及iPhone X推出后工程中遇到的问题及适配
1.UITableView滑动时右侧的滑动条忽长忽短的乱跳以及MJRefresh上拉刷新死循环 这是因为tableView在iOS11默认使用SelfSizing,tableView的estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight三个高度估算属性由默
js动态生成二维码
需求:项目需要根据链接实时生成二维码,当检测终端是PC时,将当前项目链接生成二维码供用户手机端使用 判断终端是否为mobile function isMobile () { let flag navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile
PassFab iPhone Backup Unlocker(itunes备份密码找回神器)官方中文版V5.2.10.2 | iphone备份密码解除工具下载 | itunes备份密码忘记怎么办
PassFab iPhone Backup Unlocker 是来自PassFab公司的一款新型iphone备份密码解除工具,兼容主流版本的IOS系统和苹果产品,拥有人性化的功能、出色的性能以及强悍且独家研发的解密技术可确保百分百恢复或删除iPhone备份密码,内置词典攻击、掩码攻击以及暴力攻击三种高级itunes备份密码恢复模式,能帮助广大果粉快速解锁找回
十步教你成为合格的 iOS 开发者
1. 买一个 Mac 和 iPhone要做 iOS 开发,当然需要一台 Mac 啦!呃......你要是非装黑苹果那也不是不可以2. 安装 XcodeXcode 是你的 IDE(集成开发环境),用于开发 iOS 应用程序。它是免费的,可以直接从 App Store 上下载。3. 学习编程的基础知识(很多人可能就到此为止了)这可能是最难的步骤了。Objecti
IOS 在一个应用里打开另一个应用 及其 两个应用互相调用
[在IOS应用中打开另外一个应用的解决方案](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fblog.csdn.net%2Fwangqiuyun%2Farticle%2Fdetails%2F8081974) 最近要在IOS中实现一个应用启动另外一个应用的功能,搜了一些资料,使用UIAppl
IOS中常用的知识总结(二)
16、程序启动画面大小    iOS设备现在有三种不同的分辨率:iPhone 320x480、iPhone 4 640x960、iPad 768x1024。以前程序的启动画面(图片)只要准备一个 Default.png 就可以了,但是现在变得复杂多了。下面就是 CocoaChina 会员做得总结     如果一个程序,
IOS推送通知机制和流程
APNS的推送机制 ========= #### Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification Service的缩写,也就是苹果的推送服务器。 上图可以分为三个阶段: 第一阶段:应用程序的服务器端把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册P
10个必需的iOS开发工具和资源
转自:http://coolshell.cn/articles/5089.html 界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自[10 Essential iOS Developer Tools & Resources](https://w
IOS之地图和定位应用开发
11.1 iOS定位服务 ------------ **iOS中有三个定位服务组件:**    Wifi定位,通过查询一个Wifi路由器的地理位置的信息。比较省电,iPod touch和iPad也可以采用。    蜂窝基站定位,通过移动运用商基站定位。也适合有3G版本的iPod touch和iPad。    GPS卫星定位,通过3-4颗GPS定位位置
iOS 开发屏幕适配尺寸
iPhone 4                   width  320                 height  480 iPhone 5/5s            width  320                 height   568 iPhone 6                  width  375    
AppleWatch开发入门一——Watch的开发思路与应用框架
AppleWatch开发入门一——Watch的开发思路与应用框架 -------------------------------- ### 一、引言         Apple Watch无疑是apple在智能手表领域的一次革命,如何在Watch上开发出实用且具有美感的应用,是iOS开发者们开始思考的一个问题,由于watch的随身性和快捷性,在某些方面,
Could not find iPhone 6 simulator
最近原来的老项目有点问题需要处理一下,运行启动命令,就报了如下错误,提示找不到iPhone 6 模拟器。 react-native run-ios Owaiss-Mac:pdm owaisahmed$ react-native run-ios Found Xcode project pdm.xcodeproj
Surge 开启脚本功能后,京东自动签到总结
本人小白,花费半天时间才弄好,写下这个给自己和后来人指路。 Surge 开启脚本功能后,京东自动签到获取京豆总结: 1、注意 去 Raw 真实地址下载 js  https://github.com/NobyDa/Script/blob/master/JD-DailyBonus/JD\_DailyBonus.js 将下载好的文件放在 /我的iphone