我是否可以使用NSLayoutConstraints来保持UIView的子视图等间距,而不管以后添加或从子视图数组中删除?

时间:2013-05-13 19:05:12

标签: ios cocoa-touch nslayoutconstraint

我希望有一个UIView,每当我在其subviews数组中添加或删除子视图时,无论在数组中发生的子视图仍然是等距的。

例如,如果我有子视图a和b间隔10点appart,就像这样:

并[a] -10- [B]

然后添加一个视图c,subviews中的视图现在应该自动布局如下:

并[a] -10- [B] -10- [C]

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

并[a] -10- [C]

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

1 个答案:

答案 0 :(得分:2)

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

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

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