在iOS11出來之后,,對iOS 來說改變最大的就是安全區(qū)险掀,就是劉海的問題嗡害,在這塊對于iOS新的特性
iPhone X尺寸
APP啟動頁鹃骂,即LaunchImages良价,需要五張不同尺寸大小的圖,切記一定要選擇png格式,否則打包時報錯,導(dǎo)致APP適配失敗。
六張圖的大小即:320×480号显、640×960、640×1136、750×1334、1242×2208、
1125*2436
分別對應(yīng)的iphone屏幕尺寸:iphone 3GS怔昨、iphone4(s)矮烹、iphone5(c唯欣、s)、iphone6/7/8(s)、iphone 6/7/8(s) plus、iPhoneX
具體步驟:
Step1:
1.點擊工程目錄中的Images.xcassets/Assets.xcassets,點擊左側(cè)邊欄的LaunchImages(如果沒有,在空白處右擊創(chuàng)建一個)
2.然后在xcode最右側(cè)的邊欄處選擇你的APP是否要對ipad、橫豎屏、以及低版本的iOS系統(tǒng)做支持。
iOS 11之前熟丸,
automaticallyAdjustsScrollViewInsets經(jīng)常被設(shè)置成NO纱兑,由開發(fā)者去控制處理留白和坐標(biāo)問題, 但是11+automaticallyAdjustsScrollViewInsets = NO這句代碼失效铐炫。
iOS 11后泳梆,
把這個automaticallyAdjustsScrollViewInsets廢棄鳞溉,新增了contentInsetAdjustmentBehavior抄罕,這個屬性是個枚舉類型值做入,我們只需要把其設(shè)置成never就行了
解決tableView偏移88的問題, ?我們可以對對 tableView 進(jìn)行如下設(shè)置:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
2浪秘、導(dǎo)航欄適配
導(dǎo)航欄新增了一種大標(biāo)題樣式,默認(rèn)設(shè)置是不開啟,所以不需要修改尝胆。
iOS 11以前贪染,導(dǎo)航欄的高度是64,其中狀態(tài)欄statusBar的高度是20铣耘,底部tabbar的高度是49。
iOS 11之后,iPhoneX的導(dǎo)航欄的高度是88,其中狀態(tài)欄的statusBar的高度變成了44, 底部的tabbar變成了83。
iPhoneX的底部增加了虛擬Home區(qū),由于安全區(qū)域的原因默認(rèn)tabBar的高度由49變?yōu)?3,增高了34,所以自定義的底部TabBar也需要需改其適配方案。
目前我們項目沒有自定義底部TabBar, 則先不考慮吧, 先來考慮關(guān)于navi 在 iPhone X 上是88的問題.
目前沒發(fā)現(xiàn)有iPhoneX的機(jī)型判斷API,建議使用size來做代替判斷闽晦。
#definekStatusBarHeight[[UIApplicationsharedApplication] statusBarFrame].size.height
#define kNavBarHeight 44.0
#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)//tabBar高
#define kTopHeight(kStatusBarHeight + kNavBarHeight)//導(dǎo)航欄高
//判斷iPhoneX
#define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#defineiPhoneX[[UIScreenmainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone
3、iPhone X上下顯示黑條問題
運行Xcode9.0的iPhoneX模擬器, APP在iPhoneX屏幕沒填充滿,上下有黑色區(qū)域,這是因為app之前未用LaunchScreen.Storyboard作為啟動頁面,可以使用LaunchScreen來當(dāng)做入場頁面走孽,這樣APP才會自動適配為iPhoneX的大小困食。我的項目中是用Assets中的LaunchImage, 這樣就可以修改Assets中的LaunchImage待讳,添加iPhoneX的Launch圖(1125*2436)
更新適配版本時 iPhone X 的啟動圖適配加上了, 千萬別忘了也要傳 Icon. 否則就會有上傳版本時會有提示警告滴
4部凑、MJRefresh上拉刷新死循環(huán)
self.tableView.estimatedRowHeight=150.0f;
150這個數(shù)值是你cell的平均高度劳较,如果estimatedRowHeight設(shè)置非常小,MJRefresh的KVO會監(jiān)聽錯誤的contentoffset,造成不停進(jìn)行上拉加載操作厂画。