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

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

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

-setNeedsLayout -layoutIfNeeded 

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

是的,UIView上有一个方法叫做- (void)updateConstraintsIfNeeded

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

但是我不认为这是你的问题

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

我发现的最好的是:

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

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

希望这会有所帮助