我需要为不同大小的类创建一些不同版本的布局,我需要在没有故事板的情况下这样做。
我想知道最好的方法是什么?到目前为止,我有两个选择:
1)只需删除traitCollectionDidChange()
中的所有旧约束并设置新的约束集。
2)将所有约束存储在我的ViewController中,并在traitCollectionDidChange()
中修改它们。
第二种选择对我来说似乎更好,但我仍有疑问:)
答案 0 :(得分:1)
将约束存储在视图控制器中 - 如果可能,最好在数组中。然后,使用 viewWillTransition(to:size :) 来激活/停用。
var wC = [NSLayoutConstraint]()
var wR = [NSLayoutConstraint]()
var hC = [NSLayoutConstraint]()
var hR = [NSLayoutConstraint]()
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
// use following two lines if width changes from compact to regular
NSLayoutConstraint.deactivate(wC)
NSLayoutConstraint.deactivate(wR)
}