適配iPhone X和iOS 11遇到的問題

本文主要記錄我在適配過程中遇到的問題。

1、如何在iPhone X上全面屏運行

需要修改啟動圖以適配iPhone X,這個跟以前iPhone 6出來時一樣,添加對應的啟動圖即可。
由于我們的項目使用的是LaunchScreen.storyboard,所以設置storyboard的左下角的View as:IPhone X即可。


image.png

然后添加對應的啟動圖片,尺寸為1125*2436. 我們項目的圖片放在了Assets.xcassets里面,所以先修改對應的Contents.json,添加如下:

{
      "extent" : "full-screen",
      "idiom" : "iphone",
      "filename" : "LaunchImage@1125X2436.png",
      "minimum-system-version" : "11.0",
      "subtype" : "2436h",
      "orientation" : "portrait",
      "scale" : "3x"
 }

注意修改filename為自己的filename,然后將啟動圖放在對應的位置即可。
這里遇到了一個問題,在修改完之后iPhone X上并未顯示啟動圖,刪除應用重新安裝也不行,后來重啟了下手機重新安裝就好了,猜測是有緩存。

2、導航欄尺寸變化適配

由于我們的項目并未使用自定義的navigationbar和tabbar,所以省去了很多麻煩,比如說MJRefresh的問題,在上面的博客中有提到,如果有相似情況的可以看看。
在我們的項目中只需要修改下諸如tableview.frame.y之類的即可。
這里使用宏定義

#define SafeAreaTopHeight (KScreenHeight == 812.0 ? 88 : 64)

在設置界面內(nèi)容時,子控件的y值使用這個宏即可。

3、tableview頂部多出空白

原因是代碼中只實現(xiàn)了heightForHeaderInSection方法,而沒有實現(xiàn)viewForHeaderInSection方法。那樣寫是不規(guī)范的,只實現(xiàn)高度,而沒有實現(xiàn)view,但代碼這樣寫在iOS 11之前是沒有問題的,iOS 11之后應該是由于開啟了估算行高機制引起了bug。添加上viewForHeaderInSection方法后,問題就解決了?;蛘咛砑右韵麓a關閉估算行高,問題也得到解決。

self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;

4、scrollView在轉(zhuǎn)場動畫回來后發(fā)生偏移

網(wǎng)上有很多提到pop回來后會向下偏移,在我們項目中是在豎屏scrollView上present一個橫屏的viewController,然后dismiss回來時scrollView向右發(fā)生了偏移,可能是同一個問題。
添加如下代碼解決

if (@available(iOS 11.0, *)) {
    scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}

5、iOS 11上的相機權限

iOS11上系統(tǒng)默認打開了用戶相冊的訪問權限,但是當你保存圖片時APP就會crash,原因是需要在info.plist再申明一個NSPhotoLibraryAddUsageDescription的key,同時為了兼容iOS11以前的機型,保留以前NSPhotoLibraryUsageDescription的key

6、隱藏iPhoneX的home條(HomeIndicator)

在視頻播放控制器中重寫以下方法:

- (BOOL)prefersHomeIndicatorAutoHidden {
    return YES;
}

默認返回NO,返回YES Home指示條就能自動隱藏了,此方法是在屏幕若無交互事件響應時,延遲2秒左右會回調(diào)此方法。

如果想全面了解iPhone X以及iOS 11的適配問題,推薦閱讀以下文章:
官方文檔:https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/
其他精選博客:http://www.itdecent.cn/p/3a9ad4f0fa32?appinstall=0
http://www.itdecent.cn/p/670318acae90
http://www.itdecent.cn/p/efbc8619d56b

里面詳細介紹了iPhone X的尺寸變化以及適配方法。

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

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

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