昨天手欠更新到Xcode9,順便把手機也升級到IOS11,更新才發現還是以前的好,心累啊。開始各種適配,這里只備注一下自己適配過程中遇到的問題以及解決辦法
1.關于tableview的contentInset
問題,這個是在使用MJRefesh過程中發現的,后來網上查了一下,原來IOS11廢棄了automaticallyAdjustsScrollViewInsets
這個屬性,新增了一個contentInsetAdjustmentBehavior
來代替他,那么我們在做的時候需要加一個判斷:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);
self.tableView.scrollIndicatorInsets = self.tableView.contentInset;
} else {
self.tableView.contentInset = UIEdgeInsetsMake(5, 0, 0, 0);
}
這個建議寫在基類里面或者定義一個宏.不然要寫的地方很多。
2.關于檢測是否開啟定位
的判斷.在iOS11
之前,一直都是使用kCLAuthorizationStatusAuthorizedAlways
來進行檢測是否開啟定位服務。
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedAlways)
但是到了IOS11 蘋果禁止了always
這個枚舉值,但是并沒有廢棄,這就尷尬了,所以換了另一個枚舉值
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse)
,這樣就可以檢測了.
未完待續!!!