iOS11遇到的坑及解決方法

1、iOS 11之前的導(dǎo)航欄的高度是64px(狀態(tài)條+導(dǎo)航欄),iOS11之后如果設(shè)置了prefersLargeTitles = YES(默認(rèn)NO)則為96pt。所以一般不用管。

2、在iOS 11上運(yùn)行tableView向下偏移64px或者20px,因?yàn)閕OS 11廢棄了automaticallyAdjustsScrollViewInsets,而是給UIScrollView增加了contentInsetAdjustmentBehavior屬性。避免這個(gè)坑的方法是要判斷

if?(@available(iOS?11.0,?*))?{

_tableView.contentInsetAdjustmentBehavior?=?UIScrollViewContentInsetAdjustmentNever;

}else?{

self.automaticallyAdjustsScrollViewInsets?=?NO;

}

3、tableView的sectionHeader、sectionFooter高度與設(shè)置不符,因?yàn)閠ableView的estimatedRowHeight、estimatedSectionHeaderHeight、 estimatedSectionFooterHeight三個(gè)高度估算屬性由默認(rèn)的0變成了UITableViewAutomaticDimension。最簡(jiǎn)單的方法就是直接設(shè)置為0。


4、iPhone X狀態(tài)條由20px變成了44px,UITabBar由49px變成了83px。設(shè)置布局時(shí)y直接寫成64的就要根據(jù)機(jī)型設(shè)置??梢栽O(shè)置宏

#define Device_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO),

然后再設(shè)置。


5.IOS11 之前,不想讓scrollView偏移64px,設(shè)置automaticallyAdjustsScrollViewInsets=NO就可以了。IOS11以后就廢棄了,使用scrollView的屬性contentInsetAdjustmentBehavior來防止偏移。

UIScrollViewContentInsetAdjustmentAutomatic

UIScrollViewContentInsetAdjustmentScrollableAxes

UIScrollViewContentInsetAdjustmentNever

UIScrollViewContentInsetAdjustmentAlways

這里我們直接選Never就可以了

這里要注意的是,需要判斷當(dāng)前系統(tǒng)

//ios11 設(shè)置scrollView偏移

if (@available(iOS 11.0, *)) {

_scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

}else {

self.automaticallyAdjustsScrollViewInsets = NO;

}



6.navigation bar 的titleView支持了autolayout,需要titleView自己撐開或者重寫了- intrinsicContentSize方法。intrinsicContentSize顧名思義,固定大小的意思,主要是解決一些模糊約束的問題。更多知識(shí)可以看這篇文章詳解intrinsicContentSize。

不做適配在IOS11會(huì)遇到的問題:

titleView對(duì)應(yīng)的View大小和預(yù)期不一致。

titleView對(duì)應(yīng)的View有點(diǎn)擊事件會(huì)無(wú)法觸發(fā)

解決方法是直接重寫titleView對(duì)應(yīng)View的intrinsicContentSize方法

- (CGSize)intrinsicContentSize {

return UILayoutFittingExpandedSize;

}


7.在IOS11,原有的NSLocationAlwaysUsageDeion被降級(jí)為NSLocationWhenInUseUsageDeion。因此,在原來項(xiàng)目中使用requestAlwaysAuthorization獲取定位權(quán)限,而未在plist文件中配置NSLocationAlwaysAndWhenInUseUsageDeion,系統(tǒng)框不會(huì)彈出。建議新舊key值都在plist里配置,反正我試下來是沒有問題,唯一的區(qū)別是使用requestAlwaysAuthorization獲取權(quán)限 IOS11系統(tǒng)彈框會(huì)把幾種權(quán)限級(jí)別全部列出,供用戶選擇,顯然更人性化了哈~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、iOS 11之前的導(dǎo)航欄的高度是64px(狀態(tài)條+導(dǎo)航欄),iOS11之后如果設(shè)置了prefersLargeT...
    xiaowu0125閱讀 1,955評(píng)論 0 3
  • 適配iOS11 ??蘋果官方文檔??蘋果官方視頻為了掙錢...哦??不是,為了廣大中國(guó)的開發(fā)者,蘋果官方文檔出了好多中文...
    philiha閱讀 1,222評(píng)論 1 50
  • 搞事一:導(dǎo)航欄1.導(dǎo)航欄高度變化導(dǎo)航欄在iOS10之前都是默認(rèn)的64p,但是,到了iOS10就不單單是64p了,可...
    貝勒老爺閱讀 1,146評(píng)論 0 13
  • 關(guān)關(guān)雎鳩,在河之洲。窈窕淑女,君子好逑。 參差荇菜,左右流之。窈窕淑女,寤寐求之。 求之不得,寤寐思服。悠哉悠哉,...
    零淵CRUCIS閱讀 433評(píng)論 0 1
  • 親愛的媽媽,我現(xiàn)在在臥龍崗半山腰上的一家咖啡店里,點(diǎn)了一杯拿鐵,選了一張老舊的木頭長(zhǎng)桌坐下,桌上擺著你喜歡的蝴蝶蘭...
    西小李閱讀 1,127評(píng)論 0 5

友情鏈接更多精彩內(nèi)容