NSLayoutConstraint常量的值总是返回0 swift 3

时间:2017-03-18 10:12:23

标签: ios swift nslayoutconstraint

我正在使用Swift 3做一个iOS项目,我有一个UIPagerViewController,我在其中一个ViewControllers的边框中创建了一个按钮。之后,我在按钮上添加了一个约束,如下图所示: enter image description here

约束的值为 -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)")
    }

1 个答案:

答案 0 :(得分:3)

compare.py时,视图的子视图尚未布局。尝试将代码放在viewDidLoad()中,或者在检查约束常量之前,调用viewDidLayoutSubviews()