我正在使用Swift 3做一个iOS项目,我有一个UIPagerViewController,我在其中一个ViewControllers的边框中创建了一个按钮。之后,我在按钮上添加了一个约束,如下图所示:
约束的值为 -33
之后,我将相关的IBOutlet创建为此约束:
@IBOutlet weak var rightButtonConstraint: NSLayoutConstraint!
我希望在ViewController启动时以编程方式获取此值,所以我做了:
public var defaultRightConstraint: CGFloat = 0.0
override func viewDidLoad() {
super.viewDidLoad()
defaultRightConstraint = rightButtonConstraint.constant // the constraint return 0
print(" DEFAULT RIGHT CONSTRAINT \(defaultRightConstraint)") // Returns 0 and not -33 why ?
}
但是我得到的值已经是0而不是-33我做错了什么?
编辑:
我试过没有成功:
override func viewDidLayoutSubviews() {
self.view.layoutIfNeeded()
defaultRightConstraint = rightButtonConstraint.constant
print(" DEFAULT RIGHT CONSTRAINT \(rightButtonConstraint.constant)")
}
答案 0 :(得分:3)
当compare.py
时,视图的子视图尚未布局。尝试将代码放在viewDidLoad()
中,或者在检查约束常量之前,调用viewDidLayoutSubviews()
。