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



我想有一个UIView在哪里,每次我添加或删除子视图从它的subviews数组,无论子视图恰好是在数组仍然等间距。

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

[a] -10 [b]

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

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

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

[a] -10 [c]

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

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

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

然后你只需要调用setNeedsUpdateConstraints每当你添加/删除子视图

最新更新