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並輕鬆修改它們 –