当前位置: 首页 > 知识库问答 >
问题:

我可以使用NSLayoutConstraint来保持UIView的子视图等间距,无论以后从子视图数组中添加或删除吗?

劳彦
2023-03-14

我希望有一个UIView,每当我从它的子视图数组中添加或删除子视图时,数组中的任何子视图仍然是等间距的。

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

[a]-10-[b]

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

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

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

[a] -10-[c]

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

共有1个答案

濮嘉茂
2023-03-14

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

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

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

 类似资料:
  • 我试图添加定制器类,以删除条形图中的条形图之间的空间,但我得到了一些错误的iReport后添加定制器类属性包barchart定制器。我还在iReport的类路径中添加了barchartcustomizer.jar。 我的代码:- 但是当我点击预览得到这个错误:- 错误 如何解决这个错误任何建议都会对我很有帮助。

  • 我不知道这是否是搜索“在子视图中添加UIViewController”的正确键。正如您在我的图像中看到的,有两个ViewController,主控制器和第二个控制器。主控制器内部有一个UIView(蓝色背景色)。在UIView中,我想在UIView中添加第二个ViewController。我有这个代码,但不起作用。 这是我的密码 我想知道这是否可行?我知道在xib文件中工作,我不知道在google

  • 问题内容: 我正在寻找一种简单的方法,可以一次从一个超级视图中删除所有子视图,而不是一个一个地删除它们。 我缺少什么? 更新 我的应用有一个main 。我必须添加其他不同的视图作为子视图,以便提供一种导航。 因此,当单击按钮“打开”特定页面时,我需要删除所有子视图并添加新的子视图。 更新2-可行的解决方案(OS X) 我猜苹果已经解决了。 现在,它比以往更容易了,只需致电: 问题答案: 编辑:(感

  • 问题内容: 我正在设计一个最适合我的用途,而不是使用成熟的PHP MVC。我已经完成了基本框架,并编写了运行网站所需的模型和控制器。 现在,我进入“视图”,遇到了一个小难题。我的方法对我来说很好,但是为了将来参考,我想知道我在做什么是否有不好的习惯。 我正在尝试做的是: 在我的视图中,我正在调用一个运行身份验证系统的模型,并请求用户的登录状态。然后,我使用该布尔值来决定是否在视图中显示某些元素,以

  • 问题内容: 我的一个视图需要添加一个项目以及其他功能,但是我已经有另一个视图专门添加了一个项目。 我可以做类似的事情吗? 问题答案: View函数应将呈现的HTML返回给浏览器(在中)。在视图中调用视图意味着(可能)要进行两次渲染。相反,只需将“添加”分解为不是视图的另一个函数,并让两个视图都调用它。

  • 我使用在之间切换,但是我可以使用在简单XML布局之间切换吗? 这是ViewPager的页面,用于在片段之间滑动: 这是我的提示片段: 如何修改代码以使用视图而不是片段?