1

我想要一个 UIView ,每次我从它的subviews数组中添加或删除子视图时,无论哪个子视图碰巧在数组中仍然是等距的。

例如,如果我有子视图 a 和 b 间隔 10 个点,如下所示:

[a]-10-[b]

然后添加一个视图 c,其中的视图subviews现在应该像这样自动布置:

[a]-10-[b]-10-[c]

但是,如果我现在删除视图 b,则 a 和 c 之间的差距应该再次更新为 10 个点:

[a]-10-[c]

我知道我可以使用 NSLayoutConstraint 在两个已知视图之间创建这种类型的约束,我想我也可以设置一个 KVO,每次数组更改时,我都可以循环遍历所有子视图并重新应用约束,但我想知道如果有一种自动的方法。

4

1 回答 1

2

确保根据当前子视图计算约束的代码位于 updateConstraints 中:

- (void)updateConstraints {
    [super updateConstraints];
    // Put your code here
}

然后,您只需setNeedsUpdateConstraints在添加/删除子视图时调用。

于 2013-05-13T19:54:47.443 回答