1.UITableView滑動時右側的滑動條忽長忽短的亂跳以及MJRefresh上拉刷新死循環
這是因為tableView在iOS11默認使用Self-Sizing,tableView的estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight三個高度估算屬性由默認的0變成了UITableViewAutomaticDimension,MJRefresh的KVO會監聽錯誤的contentoffset,造成不停進行上拉加載操作,
解決方法可以再全局里面將上面3個屬性的默認值設置為0即可
?UITableView.appearance.estimatedRowHeight?=0;
UITableView.appearance.estimatedSectionFooterHeight?=0;
UITableView.appearance.estimatedSectionHeaderHeight?=0;
2.在iOS 11中tableview的contentsize默認下移了64高度
在iOS 11中UIViewCOntroller的 automaticallyAdjustsScrollViewInsets 屬性被廢棄了取而代之的是UIScrollVIew的contentInsetAdjustmentBehavior屬性,同樣的也可以更改默認的值
if(@available(iOS11.0, *)) {
UIScrollView.appearance.contentInsetAdjustmentBehavior?=?UIScrollViewContentInsetAdjustmentNever;
}else{
//?Fallback?on?earlier?versions
self.automaticallyAdjustsScrollViewInsets?=?NO;
}
然而這樣寫在調用相冊的時候當推出系統相冊的時候將系統頁面contentSize的下移取消掉了導致出現了大問題,所以又將上面的默認值去掉在特定的界面修改即可
3.項目在iPhone X上運行時上下都有巨大的黑邊
解決方法:因為項目中是用Assets中的LaunchImage, 這樣就可以修改Assets中的LaunchImage,添加iPhoneX的Launch圖(1125*2436)即可,但是
iOS11以前,導航欄的高度是64,其中狀態欄statusBar的高度是20,底部tabbar的高度是49。
iOS 11之后,iPhoneX的導航欄的高度是88,其中狀態欄的statusBar的高度變成了44, 底部的tabbar變成了83。
iPhoneX的底部增加了虛擬Home區,由于安全區域的原因默認tabBar的高度由49變為83,增高了34,所以自定義的底部TabBar也需要修改其適配方案。
// 判斷是否是iPhone X
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
//宏定義
// 狀態欄高度
#define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.f)
// 導航欄高度
#define NAVIGATION_BAR_HEIGHT (iPhoneX ? 88.f : 64.f)
// tabBar高度
#define TAB_BAR_HEIGHT (iPhoneX ? (49.f+34.f) : 49.f)
// home indicator
#define HOME_INDICATOR_HEIGHT (iPhoneX ? 34.f : 0.f)
#define IS_OS_7_OR_LATER? ? ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
摘抄:http://www.cocoachina.com/ios/20171031/20999.html