我需要在项目中以编程方式更新约束,以相应地调整视图的高度(基于不同的子视图)。我已经在控制器中找到了约束的出口,但面临一个问题。
当我第一次尝试更新(在viewDidLoad或viewWillAppear 方法中)时,它没有更新。如果我之后更新它(因为一些旋转等),那么它是正确完成的。 请告诉我为什么会发生这种情况以及这样做的正确方法/地点是什么?(因为我觉得在我在viewWillAppear / DidLoad中更新后,约束会在某处再次更新)。
我也尝试了 view.layoutIfNeeded ,但没有帮助。我想这与viewDidLoad和其他viewController委托方法
有关P.S。我也在我的项目中使用大小类,但我认为它与它无关,因为它在某些情况下有效。
答案 0 :(得分:2)
更新约束可能无效viewWillAppear
。
但是,它可以在viewDidAppear
中使用。
您可能会覆盖其他地方,例如:(首次使用static BOOL shouldRefreshView = NO;
)
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
if(shouldRefreshView) {
shouldRefreshView = NO;
[self.view layoutIfNeeded];
}
}