? ? ? ? 每年都要經(jīng)歷一次Xcode的升級房揭,意味著編譯器sdk的升級备闲,有時候編譯器變化小晌端,有時候變化大,今年是個大年恬砂,適配任務(wù)異常繁重咧纠。主要包括以下幾個地方。
1泻骤,NavigationBar
? ? ? ? ?導(dǎo)航條上BarItem和titleView的布局都發(fā)生了變化漆羔。都要適配。
? ?1.1 BarItem
? ? ? ? 使用xcode9狱掂,需要兼容iOS 11和之前的系統(tǒng)演痒,需要寫兩套代碼,通過系統(tǒng)版本號來區(qū)分趋惨。
? ? 1.2 titleview
? ? ? 使用xcode9之后鸟顺,titleview最好采用自定義view,添加一個可寫的屬性intrinsicContentSize器虾。然后在使用titleview的時候讯嫂,設(shè)置它的intrinsicContentSize。
2曾撤,SafeArea端姚。
? ? ? 安全區(qū)域。由于iPhoneX的存在挤悉,蘋果給出了一個安全區(qū)域的解決方案渐裸。具體指的是NavigationBar以下,Tabbar以及iPhoneX的底部34以上装悲。
? ? ? 可以定義幾個宏昏鹃,用戶定義TopNaviHeight,BottomTabbarHeight诀诊,BottomHeight洞渤,判斷條件以是不是iPhoneX為條件。
? ? ?在寫controller的時候属瓣,由于iPhoneX的存在载迄,不能直接在controller的view上,添加自己寫的view抡蛙,最好包裝一層view护昧,這一層包裝的view的范圍就是安全區(qū)域的大小,它的約束結(jié)合上面幾個宏就可以確定粗截。然后惋耙,我們在這個包裝的view上進行代碼布局。
3,automaticallyAdjustsScrollViewInsets
? ? ? ? iOS11里面這個屬性廢棄了绽榛。從開發(fā)的角度來說湿酸,一個字,無論這個屬性變成什么樣灭美,都把它們禁掉推溃。
4,iPhoneX
? ? ? ?主要是安全區(qū)域的問題冲粤,前面已經(jīng)闡述過美莫。
5,位置權(quán)限
? ? ? info.plist里面要增加對NSLocationAlwaysAndWhenInUseUsageDescription的描述梯捕,否則Xcode9打出來的包厢呵,獲取運動權(quán)限的時候,提示不出來傀顾。