无论视图高度如何,frame.size.height的值始终相同

时间:2014-12-30 20:22:36

标签: ios uiview autolayout nslayoutconstraint

我对超级视图有两个观点。视图B位于视图A:

下方
VIEW A
fixed top space to top layout guide 
fixed height

VIEW B
fixed top space to View A
fixed bottom space to bottom layout guide

想法是查看高度+视图B高度以垂直填充屏幕。这很好用。如果我更改View A的高度约束的常量,视图会按照我的预期调整大小。观看B的高度增长或缩小以占据屏幕的其余部分。

然而,两个观点的价值都是'高度不会改变,总是568.0。我正在考虑a view's frame.size.height。无论视图的实际大小如何,值始终为568.0(我在iPhone 6上进行测试)。

我有这个:

heightConstraintViewA.constant = 300.0
println( "\(viewA.frame.size.height)" )  // this is always 568.0

1 个答案:

答案 0 :(得分:1)

问题在于约束和布局是两回事。约束只是一条指令。它不是服从直到布局时间,这要晚得多。

所以,你可以设置一个视图的高度约束,但当时没有其他事情发生 。更改约束后,没有必要在下一行中检查视图的高度,因为尚未发生任何事情

稍后,布局发生,并遵守约束 - 如果这就是约束的意思,那么高度实际上会发生变化。