如何在代码中设置NSLayoutConstraint常量的变体?

时间:2018-11-06 22:32:41

标签: ios swift nslayoutconstraint

我已将约束拖放到代码中并可以访问它。

@IBOutlet weak var betweenTextTerms: NSLayoutConstraint!

但是,似乎我所能做的就是设置常量。 但是,如何在代码中设置诸如Compact Regular之类的变量的值?

enter image description here

1 个答案:

答案 0 :(得分:2)

要以编程方式执行此操作,请在视图控制器中覆盖traitCollectionDidChange:方法。

然后您可以查看self.traitCollection.horizontalSizeClassself.traitCollection.verticalSizeClass来决定要做什么。使用您创建的对布局约束的引用来相应地设置常量。

设置完所有布局约束后,请在视图上调用updateConstraints触发布局传递。

例如:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    let hCompact = (self.traitCollection.horizontalSizeClass == .compact)
    let vRegular = (self.traitCollection.verticalSizeClass == .regular)

    if hCompact && vRegular {
        self.betweenTextTerms.constant = 45
    }

    self.updateViewConstraints()
}

对于简单的情况,在情节提要中执行此操作更加方便!