以编程方式更新约束 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];
}
}
我需要在我的项目中以编程方式更新约束 以相应地调整视图的高度(基于不同的子视图)。我已经解除了控制器中的约束,但遇到了问题。
当我第一次尝试更新时 (在 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];
}
}