iOS14适配

适配1: Cell点击无效

在14上可能出现点击cell上的视图无法响应的情况.
原因:iOS14更改Cell视图布局.将contentView放在最上层,如果将视图加载在cell上,将会出现contentView遮罩,导致事件无法响应.是在此前关于 contentView 的声明注释中,官方已经明确建议开发者将 customView 放在 contentView 上,使 contentView 作为 UITableViewCell 默认的 fatherView。

解决办法:
1、可以将cell子视图加载在contentView上(提倡)
2、将contentView设置到最底层 self.sendSubviewToBack(self.contentView)

或者:通过Runtime简单暴力的方式快速兼容了,原理就是在所有Cell addSubView()时,通过runtime拦截改为 contentView.addsubview(),代码:

extension UITableViewCell {
    
    class func ios14Bug() {
        
        let sel1 = #selector(UITableViewCell.runtime_addSubview(_:))
        let sel2 = #selector(UITableViewCell.addSubview(_:))
        
        let method1 = class_getInstanceMethod(UITableViewCell.self, sel1)!
        let method2 = class_getInstanceMethod(UITableViewCell.self, sel2)!
        
        let isDid: Bool = class_addMethod(self, sel2, method_getImplementation(method1), method_getTypeEncoding(method1))
        if isDid {
            class_replaceMethod(self, sel1, method_getImplementation(method2), method_getTypeEncoding(method2))
        } else {
            method_exchangeImplementations(method2, method1)
        }
    }
    
    @objc func runtime_addSubview(_ view: UIView) {
        // 判断不让 UITableViewCellContentView addSubView自己
        if view.isKind(of: NSClassFromString("UITableViewCellContentView")!) {
            runtime_addSubview(view)
        } else {
            self.contentView.addSubview(view)
        }
    }
}

适配2:UIDatePicker 更新 UI 样式

iOS 14 中,UIDatePicker UI样式更新了

适配3:相册权限

iOS14 新增了“Limited Photo Library Access” 模式,在授权弹窗中增加了 Select Photo 选项。用户可以在 App 请求调用相册时选择部分照片让 App 读取。从 App 的视⻆来看,你的相册里就只有这几张照片,App 无法得知其它照片的存在。
重点!!!:权限提示框会在每次冷启动后打开相册时重新弹出,可以在 info.plist 中设置 PHPhotoLibraryPreventAutomaticLimitedAccessAlert 选项为 YES ,关闭提示

适配4:地理位置

新增了 精确定位 和 模糊定位 的概念,用户可以手动选择,模糊定位的误差约 500m 。可以根据实际功能判断是否可以接受用户选择模糊定位。
如果功能强依赖精确定位,可以在需要的时候调用 [CALocationMnanger requestTemporaryFullAccuracyAuthorizationWithPurposeKey:] 单独请求一次精确定位,用户可以选择拒绝授权。所需参数 purposeKey 需要在 info.plist 中设置 NSLocationTemporaryUsageDescriptionDictionary 字典,key 为 purposeKey , value 为对应的话述

权限部分可以参考

iOS14更新内容及兼容设备

猜你喜欢

转载自blog.csdn.net/C_philadd/article/details/108646544