從9月15號(hào)茸炒,開(kāi)始預(yù)定了iPhone 8 以及iPhone 8 Plus爷肝。Xcode 9.0 GM版本和iOS 11 GM 版本也就發(fā)布了。
接下來(lái)蔓搞,適配iOS 11是首要的適配的瑞筐,網(wǎng)上教程很多凄鼻,不在贅述。這里主要講的是 iPhone X的適配面哼。大神級(jí)別的可以不用看野宜,我這里講的主要是基礎(chǔ)的適配工作扫步。我將按照一個(gè)項(xiàng)目的適配順序來(lái)講解:
1魔策、啟動(dòng)App
?對(duì)于一些老項(xiàng)目,在啟動(dòng)圖上河胎,可能沒(méi)有采用xib或者SB進(jìn)行適配的闯袒,所以可能會(huì)出現(xiàn)如圖一,這樣導(dǎo)致整個(gè)項(xiàng)目運(yùn)行就會(huì)不能完全貼合游岳。
解決辦法政敢,在項(xiàng)目設(shè)置里面直接用LaunchScreen.xib或者LaunchScreen.storyboard進(jìn)行配置啟動(dòng)圖,這樣項(xiàng)目就會(huì)完整顯示了胚迫。如圖二
如果不是采用xib或者sb設(shè)置的啟動(dòng)圖喷户,您需要進(jìn)行如下設(shè)置:
2、程序進(jìn)到程序的首頁(yè)访锻。如果采用了MJRefresh的刷新機(jī)制褪尝,則會(huì)顯示如下圖的效果,導(dǎo)致刷新頭部顯示期犬。不過(guò)按照實(shí)驗(yàn)?zāi)芸吹胶友疲绻伙@示下拉箭頭,則【劉汗昊ⅲ】可以正好蓋琢Ы鳌(如圖一),
·不過(guò)想讓statusBar變顏色,可以采用view上移-88 則會(huì)正常顯示佳吞。(如圖二)或者界面不上移動(dòng)拱雏,將刷新頭部背景色變成和項(xiàng)目頂部背景色一樣也可以,即設(shè)置:.mj_header.backgroundColor
·如果都不想改底扳,可以坐等MJRefresh的作者更新古涧,目前這個(gè)問(wèn)題,已經(jīng)提交給作者花盐。
3羡滑、處理到這里,可能的發(fā)現(xiàn)算芯,原來(lái)上移status可能是20 柒昏,在iPhone X的設(shè)備上,變成了88熙揍,如何設(shè)置职祷。可以采用:
// 狀態(tài)欄(statusbar)
CGRect StatusRect = [[UIApplication sharedApplication] statusBarFrame];
//標(biāo)題欄
CGRect NavRect = self.navigationController.navigationBar.frame;
然后將高度相加届囚,便可以動(dòng)態(tài)計(jì)算頂部高度有梆。
4、項(xiàng)目中難免使用全屏的情況意系,如果界面比較負(fù)責(zé)泥耀,無(wú)法采用約束布局,需要代碼適配蛔添,由于status 的高度改變痰催,需要改變動(dòng)態(tài)的計(jì)算。如圖一:
修改完后:圖二
5迎瞧、tableview的導(dǎo)致的問(wèn)題夸溶。如圖一
目前模擬器設(shè)置中也存在如下問(wèn)題,不過(guò)目前不確定會(huì)不會(huì)有所調(diào)整凶硅。
解決辦法:
目前發(fā)現(xiàn)在iOS 11中缝裁,會(huì)默認(rèn)開(kāi)啟獲取的一個(gè)估算值來(lái)獲取一個(gè)大體的空間大小,導(dǎo)致不能正常顯示足绅,可以選擇關(guān)閉捷绑。目前嘗試在delegate中處理不能很好的解決,不過(guò)可以直接設(shè)置:
self.myTableviews.estimatedSectionHeaderHeight=0;
self.myTableviews.estimatedSectionFooterHeight=0;
就能夠正常顯示了编检。圖二