1
后,我在viewDidLoad()
更改约束值旋转
let top = isLandscape ? 30.0 : 5.0
let bottom = isLandscape ? 60.0 : 20.0
let topConstraint = NSLayoutConstraint(item: mySubview, attribute: .top, relatedBy: .equal, toItem: self.view, attribute: .top, multiplier: 1, constant: top)
let bottomConstraint = NSLayoutConstraint(item: mySubview, attribute: .bottom, relatedBy: .equal, toItem: self.view, attribute: .bottom, multiplier: 1, constant: bottom)
let leadingConstraint = NSLayoutConstraint(item: mySubview, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1, constant: 50.0)
let trailingConstraint = NSLayoutConstraint(item: mySubview, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1, constant: 50.0)
mySubview.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(mySubview)
self.view.addConstraints([topConstraint, bottomConstraint, leadingConstraint, trailingConstraint])
我怎样才能应用相应的constaints设备方向更改时以编程方式添加约束视图与此代码?我阅读了setNeedsUpdateConstraints,但不明白如何使用它,或者它甚至可以帮助我。
但我想改变约束的价值,因为你可以请参阅顶部和底部约束在横向上没有相同的值 –
现在将您的代码写入函数,并在方向更改时调用该函数,而不是setNeedsUpdateConstraints()。但我认为在这种情况下你必须删除子视图并重新添加它们。 –
您是否需要以编程方式添加视图?如果您将其添加到Interface Builder中,则可以硬编码约束,您可以从中创建IBOutlet并轻松修改它们 –