前言:北京时间2017年9月20日,iOS 11正式版发布。控制中心、App Store、Siri、Apple Pay、AR、相机扫描二维码、截图、短信红包、全新设计的iPad功能,大家肯定早就迫不及待的升级新系统了。So,问题来了,我们这些开发者也需要适配iOS 11了。。。
1,UITableView使用MJRefresh刷新位置错乱(tableview视图布局错乱),self.automaticallyAdjustsScrollViewInsets = NO;此方法在iOS11中不能使用,需使用以下方法
if (@available(iOS 11.0, *)){
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
@available(iOS 11, *)必须包含至少2个特性参数,其中iOS 11表示必须在 iOS 11 版本以上才可用。另外一个特性参数:星号(*),表示包含了所有平台。
2,定位功能无法使用,控制台会打印信息,具体提示为plist文件需新增NSLocationAlwaysAndWhenInUseUsageDescription字段,定位总共需要3个字段,分别为
NSLocationAlwaysAndWhenInUseUsageDescription是否允许后台访问您的位置,获取所在城市的保险信息
NSLocationAlwaysUsageDescription是否允许后台访问您的位置,获取所在城市的保险信息
NSLocationWhenInUseUsageDescription是否允许访问您的位置,获取所在城市的保险信息
3,相册访问权限新增添加图片到相册,具体提示为plist文件需新增NSPhotoLibraryAddUsageDescription字段,相机、相册总共需要3个字段,分别为
NSCameraUsageDescription是否允许访问您的相机
NSPhotoLibraryAddUsageDescription是否允许添加图片到您的相册
NSPhotoLibraryUsageDescription是否允许访问您的相册
4,IQKeyboardManager键盘问题
(1)视图过长,第一次点击textField区域,视图定位到那个区域,并不能弹出键盘,第二次点击才能弹出键盘(不知道是不是IQ故意为之,暂时未能解决此问题)
(2)由于项目需求,需定制弹出视图,于是我们就使用textfield键盘的inputView作为自定义视图的容器,这样就简化了弹出和关闭的一些操作。由于iOS11的出现,IQ更新了一些方法,原来使用的设置键盘的方法已移除(具体移除原因不清楚,未见说明),IQUIView+IQKeyboardToolbar.h中移除了一些属性。
(3)使用新方法[self.insStartDateTF addLeftRightOnKeyboardWithTarget:self leftButtonTitle:@"取消" rightButtonTitle:@"完成" leftButtonAction:@selector(cancel) rightButtonAction:@selector(insStartDoneAction:) shouldShowPlaceholder:YES];这里传递事件的sender是一个IQBarButtonItem,我这里只能通过方法名来区分每个完成所出发的事件,不明白为什么不能写成一个方法名来区分触发的事件,希望大神能指点一下。
(4)下面的这里初始化不能设置frame,这样设置的位置会偏移,直接初始化,默认使用键盘的宽高
5,导航栏的Item不能均分,UIBarButtonSystemItemFlexibleSpace无作为,暂时没能找到很好的解决方案,下下策只能是自定义导航栏了。
6,添加tableView和collectionView的预估高度,footer和header高度的方法在iOS 11上不会走了
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
或者重写返回footer和header的view也可以。
以上都是我亲身经历过的,有些已经解决,有的还在解决中,有的暂时解决不了,希望和大家一起爬坑。