適配1: Cell點擊無效
在14上可能出現點擊cell上的視圖沒法響應的狀況.
緣由:iOS14更改Cell視圖佈局.將contentView放在最上層,若是將視圖加載在cell上,將會出現contentView遮罩,致使事件沒法響應.是在此前關於 contentView 的聲明註釋中,官方已經明確建議開發者將 customView 放在 contentView 上,使 contentView 做爲 UITableViewCell 默認的 fatherView。
ios
解決辦法:
一、能夠將cell子視圖加載在contentView上(提倡)
二、將contentView設置到最底層 self.sendSubviewToBack(self.contentView)
app
或者:經過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樣式更新了spa
適配3:相冊權限
iOS14 新增了「Limited Photo Library Access」 模式,在受權彈窗中增長了 Select Photo 選項。用戶能夠在 App 請求調用相冊時選擇部分照片讓 App 讀取。從 App 的視⻆來看,你的相冊裏就只有這幾張照片,App 沒法得知其它照片的存在。
重點!!!:權限提示框會在每次冷啓動後打開相冊時從新彈出,能夠在 info.plist 中設置 PHPhotoLibraryPreventAutomaticLimitedAccessAlert 選項爲 YES ,關閉提示
code
適配4:地理位置
新增了 精肯定位 和 模糊定位 的概念,用戶能夠手動選擇,模糊定位的偏差約 500m 。能夠根據實際功能判斷是否能夠接受用戶選擇模糊定位。
若是功能強依賴精肯定位,能夠在須要的時候調用 [CALocationMnanger requestTemporaryFullAccuracyAuthorizationWithPurposeKey:] 單獨請求一次精肯定位,用戶能夠選擇拒絕受權。所需參數 purposeKey 須要在 info.plist 中設置 NSLocationTemporaryUsageDescriptionDictionary 字典,key 爲 purposeKey , value 爲對應的話述
事件
權限部分能夠參考ip
iOS14更新內容及兼容設備開發