NSLayoutConstraint 常量的值总是 return 0 swift 3
Value of NSLayoutConstraint constant always return 0 swift 3
我正在使用 Swift 3 做一个 iOS 项目,我有一个 UIPagerViewController 并且我在其中一个 ViewController 的边框中创建了一个按钮在里面。之后,我向按钮添加了一个约束,如下图所示:
约束的值为-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)")
}
当viewDidLoad()
时,视图的子视图还没有布局。尝试将代码放在 viewDidLayoutSubviews()
中,或者在检查约束常量之前调用 view.layoutIfNeeded()
.
我正在使用 Swift 3 做一个 iOS 项目,我有一个 UIPagerViewController 并且我在其中一个 ViewController 的边框中创建了一个按钮在里面。之后,我向按钮添加了一个约束,如下图所示:
约束的值为-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)")
}
当viewDidLoad()
时,视图的子视图还没有布局。尝试将代码放在 viewDidLayoutSubviews()
中,或者在检查约束常量之前调用 view.layoutIfNeeded()
.