iPhoneX 適配總結


一、iPhoneX適配第一步,根據iPhoneX的屏幕像素大小,引入對應的啟動圖,告訴系統,app兼容iPhoneX

  

  需要在launchimage中引入一張 1125*2436的png,app將默認展示支持iPhoneX的效果

 

二、安全區域的概念

  所謂的安全區域是一個虛擬出來的概念,因為iPhoneX獨特的劉海,所以划定一個矩形的區域,在這個區域之內展示的內容不會被彎曲的屏幕切割,因此叫做安全區

  

  安全區怎么定義?

  每個viewcontroller對應一個view,view中的屬性描述上面紅色區域的距離

  @property (nonatomic,readonly) UIEdgeInsets safeAreaInsets API_AVAILABLE(ios(11.0),tvos(11.0));

  默認情況下面,在規則的屏幕比如iphone8,iphone8+ 上面, safeAreaInsets 中四個邊距是0;如果是iPhoneX上面,蘋果系統會自動給safeAreaInsets指定一些值,比如頂部距離64

  

  怎么使用safeAreaInsets?

  為了不要讓view中的元素被遮擋,你需要動態調整view中元素的位置,比如下面的代碼,  

     CGFloat xOffset = 0.0;
        if (@available(iOS 11.0, *)) {
            xOffset = self.view.safeAreaInsets.left;
        }
        self.resourceAllocView.left = xOffset + self.resourceAllocView.left;
        self.liveDataView.left = xOffset + self.liveDataView.left;
        self.splitView.left = xOffset + self.splitView.left;
        self.labelTitle.left = xOffset + self.labelTitle.left;
       _imageViewReturn.left = xOffset + _imageViewReturn.left;

  如果你使用的是autolayout

if #available(iOS 11, *) {
  let guide = view.safeAreaLayoutGuide
  NSLayoutConstraint.activate([
   greenView.topAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1.0),
   guide.bottomAnchor.constraintEqualToSystemSpacingBelow(greenView.bottomAnchor, multiplier: 1.0)
   ])

} else {
   let standardSpacing: CGFloat = 8.0
   NSLayoutConstraint.activate([
   greenView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: standardSpacing),
   bottomLayoutGuide.topAnchor.constraint(equalTo: greenView.bottomAnchor, constant: standardSpacing)
   ])
}

 

三、何時使用

  當安全區邊距變化之后,系統會在方法通知你

  - (void)viewSafeAreaInsetsDidChange

  這個方法存在於ViewController和View之中,你可以在這里對元素位置做出修正

 

四、Home鍵指示器  

  - (BOOL)prefersHomeIndicatorAutoHidden
  {
    return YES;
  }

  如果你需要隱藏Home鍵可以通過上面的方法

 

五、總結

  蘋果發展到現在,可以發現每個版本中都會新增一些界面布局的API和廢棄一些API,這個讓開發者增加了很多成本

  autolayout布局的方式蘋果也沒有放棄,甚至用的更多。frame布局越來越不好用,看來要用autolayout才能擁抱未來了

  希望蘋果在排版上多多學習Android的xml布局方式,更容易理解和靈活

 

六、參考

  iPhone X適配集合

  https://github.com/2877025939/iOS11   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM