如何触发所有自动布局约束的更新?

时间:2013-12-08 09:02:58

标签: ios autolayout

我以编程方式修改了一个自动布局约束。它对某个视图生效,但与该视图的其他约束绑定的其他视图不会更改其位置。是否有“ updateAllConstraints ”方法?

4 个答案:

答案 0 :(得分:33)

在要更新的视图上调用这两种方法:

-setNeedsLayout
-layoutIfNeeded

第一个对布局系统说这个视图需要布局,因为它有一些变化,一切都应该重新计算。第二个强制布局系统现在运行,布局系统在运行时的特定时间触发,用这种方法你会说:“现在就做”。

答案 1 :(得分:3)

是UIView上有一个名为- (void)updateConstraintsIfNeeded

的方法

https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/updateConstraintsIfNeeded

但我不认为这是你的问题

答案 2 :(得分:2)

问题是没有正确设置约束,在这种情况下,没有setNeedsLayout或updateConstraintsIfNeeded可以提供帮助。

答案 3 :(得分:-1)

遇到此主题的人,并且正在寻找在菜单中找到它的位置。

我发现的最好的是:

  1. 选择要“弹出”回约束的项目

  2. 顶级菜单:编辑/更新框架(或/)快捷方式:命令+选项+ =

  3. 希望这会有所帮助