在6月份 WWDC 2020 发布会上,苹果向我们展示了新的 iOS14 系统。随着iPhone12 的发布,新的iOS14系统也开始大规模推向了市场,那么新系统iOS14 需要适配哪些东西呢?
很重要的一点就是在用户隐私和安全方面。
1,Cell点击无效
2,UIDatePicker 更新 UI 样式
3,相册权限
4,定位
一、cell点击问题
在14上可能出现点击cell上的视图无法响应的情况.
原因:iOS14更改Cell视图布局.将contentView放在最上层,如果将视图加载在cell上,将会出现contentView遮罩,导致事件无法响应.是在此前关于 contentView 的声明注释中,官方已经明确建议开发者将 customView 放在 contentView 上,使 contentView 作为 UITableViewCell 默认的 fatherView。
适配方法:
1、将cell子视图加载在contentView上
2、将contentView设置到最底层 self.sendSubviewToBack(self.contentView)
二、UIDatePicker 更新 UI 样式
iOS 14 中,UIDatePicker UI样式更新了
三、相册
iOS14 新增了“Limited Photo Library Access” 模式,在授权弹窗中增加了 Select Photo 选项。用户可以在 App 请求调用相册时选择部分照片让 App 读取。从 App 的视⻆来看,你的相册里就只有这几张照片,App 无法得知其它照片的存在。
用户选择“PHAuthorizationStatusLimited” 时,如果未进行适配,有可能会在每次触发相册功能时都进行弹窗询问用户是否需要修改照片权限。
对于这种情况可通过在 Info.plist 中设置
“PHPhotoLibraryPreventAutomaticLimitedAccessAlert”的值为 YES 来阻止该弹窗反复弹出,并且可通过下面这个 API 来主动控制何时弹出PHPickerViewController 进行照片选择
[[PHPhotoLibrary sharedPhotoLibrary] presentLimitedLibraryPickerFromViewController:self];
官方推荐使用 PHPicker 来替代原 API 进行图片选择。PHPicker 为独立进程,会在视图最顶层进行展示,应用内无法对其进行截图也无法直接访问到其内的数据。
UIImagePickerController -> PHPickerViewController, UIImagePickerViewController 功能受限,每次只能选择一张图片,将逐渐被废弃。
PHPicker 支持多选,支持搜索,支持按 image,video,livePhotos 等进行选择。
四、定位
在 iOS14 以前,使用App的时候 请求用户定位授权时:一旦用户同意应用获取定位信息,当前应用就可以获取到用户的精确定位。
iOS14 新增用户“大致位置”选项可供用户选择,原因是大多数 App 实际上并不需要获取用户到用户最准确的定位信息。iOS14 授权弹窗新增的 Precise的开关默认会选中精确位置。
用户可以手动点击按钮进行更改,通过开关可以进行更改,地图上会显示精确位置或者用户的大致位置。
对于对用户位置敏感度不高的 App 来说,这个似乎无影响,但是对于强依赖精确位置的 App 适配工作就显得非常重要了。可以通过用户在 “隐私设置” 中设置来开启精确定位,但是可能用户宁可放弃使用这个应用也不愿意开启。这个时候,iOS14 在 CLLocationManager 新增两个方法可用于向用户申请临时开启一次精确位置权限。
需要首先在 Info.plist 中配置“NSLocationTemporaryUsageDescriptionDictionary”字典中需要配置 key 和 value 表明使用位置的原因,以及具体的描述。