以编程方式更新约束 iOS

Updating Constraints programmatically iOS

我需要在我的项目中以编程方式更新约束 以相应地调整视图的高度(基于不同的子视图)。我已经解除了控制器中的约束,但遇到了问题。

当我第一次尝试更新时 (在 viewDidLoad 或 viewWillAppear 方法 中),它没有更新。如果我之后更新它(因为一些轮换等),那么它就正确完成了。 请告诉我为什么会这样,什么是正确的 way/place 来做这件事?(因为我觉得在 viewWillAppear/DidLoad).

我也试过 view.layoutIfNeeded 但没有用。我想这与 viewDidLoad 和其他 viewController 委托方法

有关

P.S。我也在我的项目中使用 size 类 但我认为这与它无关,因为它在某些情况下有效。

更新约束在 viewWillAppear 中可能不起作用。 但是,它将在 viewDidAppear.

中工作

还有其他地方可以覆盖,比如:(第一次使用static BOOL shouldRefreshView = NO;

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    if(shouldRefreshView) {
        shouldRefreshView = NO;
        [self.view layoutIfNeeded];
    }
}