當前位置:
首頁 > 最新 > iOS11適配iPhoneX總結

iOS11適配iPhoneX總結

屏幕尺寸相關變化啟動圖的適配App內部樣式適配自定義導航欄的情況TableView、WebView、CollectionView等繼承ScrollView的適配屏幕尺寸相關變化

高度增加了145pt,變成812pt.

狀態欄高度由20pt變成44pt,留意這個距離就能避開「劉海」的尷尬,相應的導航欄以上變化64->88。

底部工具欄需要為home indicator留出34pt邊距。

物理解析度為1125px * 2436px.

啟動圖的適配

一、 如果在iPhoneX上啟動App並沒有佔滿整個屏幕,而是在中心保持原有高度,需要修改啟動圖。

未修改前張這個鬼樣:

通過方式啟動

如果啟動圖原來使用的Assets中的LaunchImage,如下圖:

給Brand Assets添加一張1125*2436大小的圖片

打開Assets.xcassets文件夾,找到Brand Assets

右鍵Show in Finder

添加一張1125*2436大小的圖片

修改Contents.json文件,添加如下內容

{

"extent":"full-screen",

"idiom":"iphone",

"subtype":"2436h",

"filename":"1125_2436.png",

"minimum-system-version":"11.0",

"orientation":"portrait",

"scale":"3x"

}

再次啟動App就可以看到全屏顯示了

App內部樣式適配

在適配之前先介紹下的調用順序:

UIEdgeInsets - top : 44.0 - left : 0.0 - bottom : 34.0 - right : 0.0

只有在調用及以後的方法才能獲得view和Controller的UIEdgeInsets。所以在viewDidLoad中根據Safe Area設置界面會有問題。

自定義導航欄的情況

先來看看隱藏系統導航欄,自定義NavigationBar不適配時iPhoneX下是什麼樣子。下圖是不適配時效果圖和約束。

會發現原來設置64高度的自定義Bar離劉海很近。原因就是iPhoneX下狀態欄高度由20變成了44。

解決方法有三種:

在Storyboard中使用Safe Area LayoutGuides,這樣有個弊端是在Storyboard使用Safe Area最低只支持iOS9,iOS8的用戶就要放棄了,這樣老闆肯定不同意。

解決思路就是,去除自定義Bar的64像素高度約束,設置TableView的頂部距離Safe Area的垂直距離為44。

選擇viewcontroller所在的storyboard,在File inspector中勾選Use Safe Area Layout Guides.

從選中TableView,按住control鍵,按住滑鼠左鍵拉到Safe Area上,選擇Vertical Spacing。

選中剛添加的約束,在Size Inspector中修改Second Item為Safe Area.Top ,Constant = 44

用代碼來布局,弊端是原來用Storyboard布局的改成純代碼,累死程序員不償命。方法就是在設置自定義bar的高度。

@available(iOS11.0,*)

overridefuncviewSafeAreaInsetsDidChange(){

navigationBarH=view.safeAreaInsets.top+44

}

當然還有第三種方式了,既能使用Storyboard又能適配iPhoneX。

思路:在Storyboard中按照非iPhoneX設置自定義導航欄的高度為64,然後把高度約束作為屬性在源碼中修改為view.safeAreaInsets.top + 44。

把自定義導航欄的高度拖到Controller作為屬性

在viewSafeAreaInsetsDidChange中修改導航欄的高度

@available(iOS11.0,*)

overridefuncviewSafeAreaInsetsDidChange(){

customNaviBarHightConstraint.constant=view.safeAreaInsets.top+44

}

TableView、WebView、CollectionView等繼承ScrollView的適配

原來的老項目中包含TableView、CollettionView的頁面如果是使用Storyboard設置的約束,在iPhoneX中可能會有34像素的安全區域,scrollview劃不到底部,如下圖:

出現這個區域的原因是:原來設置底部約束是tableview底部到Bottom Layout Guide.Top的距離。

解決辦法:

修改約束的Bottom Layout Guide.Top為Superview。

修改完後TableView就可以滾到到底部了。

以上只是我們讀秒錢包項目在適配iPhoneX時遇到的幾個小問題,可能還會有其他問題,歡迎在討論區討論。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 iPhone 的精彩文章:

庫克哭泣,iPhone8尚未發售就已經開始掉價,怎麼回事?
iPhone X產不出iPhone 8又沒人買!蘋果尷尬了
谷歌收購HTC Pixel團隊,國行iPhone8售價提前破發
還沒正式開售,iPhone 8就已經跌破官方價
iPhone 8/8 Plus圖賞:零落成琉捻作璃返歸身如玉

TAG:iPhone |