(De)激活多个NSLayoutConstraints?

时间:2015-11-26 11:06:08

标签: ios autolayout

我的UIView有两个子视图:

  • UIActivityIndicatorView
  • UIlabel

UIView尺寸基于UIActivityIndicatorViewUIlabel NSLayoutConstraints

首先,UIView的顶部链接到UIActivityIndicatorView的顶部,当我想取消激活该约束并激活UIView顶部的约束时链接到UIlabel的顶部我执行此操作:

_labelLayoutConstraintTopToSuperViewTop.active = YES;
_labelLayoutConstraintTopToActivityIndicatorViewBottom.active = NO;

这会产生警告,但是当我将其切换为此时:

_labelLayoutConstraintTopToActivityIndicatorViewBottom.active = NO;
_labelLayoutConstraintTopToSuperViewTop.active = YES;

我再也没有收到警告,直到我再次将视图顶部链接到UIActivityIndicatorView

有没有办法将这些更改放在批处理中?我误会了什么吗?我尝试使用setNeedsUpdateConstraintsupdateConstraintsIfNeededsetNeedsLayoutlayoutIfNeeded,但都没有成功。

我希望我能够清楚,thnx。

1 个答案:

答案 0 :(得分:1)

这个,我无法弄清楚。

一旦我激活约束,我就会收到一条关于我可能不想要的约束的警告,这是正确的,因为我在下一行上取消激活该约束!

我现在的解决方法是将标签的顶部附加到活动指示器的顶部,并根据需要增加/减少常量。