如何在没有故事板的情况下实现特定于尺寸类的布局?

时间:2017-01-16 20:47:23

标签: ios objective-c swift xcode autolayout

我需要为不同大小的类创建一些不同版本的布局,我需要在没有故事板的情况下这样做。

我想知道最好的方法是什么?到目前为止,我有两个选择:

1)只需删除traitCollectionDidChange()中的所有旧约束并设置新的约束集。

2)将所有约束存储在我的ViewController中,并在traitCollectionDidChange()中修改它们。

第二种选择对我来说似乎更好,但我仍有疑问:)

1 个答案:

答案 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)
}