使用情节提要的iPhone 8和8+的自动布局约束

时间:2018-11-30 16:57:24

标签: xcode autolayout storyboard

如何为iPhone 8和8+定义单独的约束?

由于两者的宽度不同。是否可以通过情节提要区分它。

基本上我想为这两部手机设置不同的x和y边距。

2 个答案:

答案 0 :(得分:0)

不,您不能在情节提要中分离iPhone 8和8+的布局,因为自动布局基于尺寸类别,并且没有可用于分离iphone 8和8+的尺寸类别。

有关更多信息:https://medium.com/@craiggrummitt/size-classes-in-interface-builder-in-xcode-8-74f20a541195

答案 1 :(得分:0)

自定义约束类 IBDesignable和IBInspectable

import UIKit

@IBDesignable
class MyConstraint: NSLayoutConstraint {

  @IBInspectable
  var iPhone8: CGFloat = 0 {
    didSet {
      if UIScreen.main.bounds.maxY == 667 &&
         UIScreen.main.bounds.maxX == 375 {
        constant = iPhone8
      }
    }
  }

  @IBInspectable
  var iPhone8Plus: CGFloat = 0 {
    didSet {
      if UIScreen.main.bounds.maxX == 414 &&
         UIScreen.main.bounds.maxY == 736 {
        constant = iPhone8Plus
      }
    }
  }
}

设置约束自定义类

enter image description here

enter image description here

enter image description here