AutoLayout调整大小视图

时间:2015-06-30 11:16:49

标签: ios objective-c uiview autolayout nslayoutconstraint

我有两个多行标签的自定义$query="SELECT * FROM parent_student_relation AS a JOIN students AS b ON a.student_id = b.id JOIN events AS c ON b.class_id = c.class_id WHERE a.parent_id = " . $parent_id; 。有时我需要隐藏此视图,因此我将UIView和高度约束设置为0。

我是这样做的,但我不确定我是否可以在自定义hidden = YES UIViews'中更改约束。

layoutSubviews

我知道布局不是单向街道流程,- (void)layoutSubviews { [super layoutSubviews]; if (!self.hidden) { self.heightConstraint.constant = 15 + self.titleLabel.frame.size.height + 4 + self.bodyLabel.frame.size.height + 15; } else { self.heightConstraint.constant = 0; } } 可能导致layoutSubviews,反之亦然。

updateConstraints

中更改视图本身的约束是否安全?

2 个答案:

答案 0 :(得分:1)

layoutSubviews方法完成其工作后调用

updateConstraints。如果您在此之后更改约束,则必须再次致电[super layoutSubviews]。修改约束的正确位置在updateConstraints方法中,但在您的情况下,您只需在layoutSubviews方法之外进行更改,然后在完成后调用setNeedsLayout

答案 1 :(得分:-1)

您需要setNeedsLayout方法。例如:

self.view.setNeedsLayout()