如何在代码中设置 NSLayoutConstraint 常量的变体?
How to set variations of a NSLayoutConstraint constant in code?
我已经在我的代码中拖放了约束并且可以访问它。
@IBOutlet weak var betweenTextTerms: NSLayoutConstraint!
不过看来我所能做的就是设置常量。
但是如何在代码中设置诸如 Compact Regular 之类的变体的值?
要以编程方式执行此操作,您需要覆盖视图控制器中的 traitCollectionDidChange:
方法。
然后您可以查看 self.traitCollection.horizontalSizeClass
和 self.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()
}
对于简单的情况,在Storyboard中做这个更方便!
我已经在我的代码中拖放了约束并且可以访问它。
@IBOutlet weak var betweenTextTerms: NSLayoutConstraint!
不过看来我所能做的就是设置常量。 但是如何在代码中设置诸如 Compact Regular 之类的变体的值?
要以编程方式执行此操作,您需要覆盖视图控制器中的 traitCollectionDidChange:
方法。
然后您可以查看 self.traitCollection.horizontalSizeClass
和 self.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()
}
对于简单的情况,在Storyboard中做这个更方便!