以编程方式更新约束条件iOS
问题描述:
我需要以编程方式在我的项目中更新约束以相应地调整视图的高度(基于不同的子视图)。我在控制器中制定了约束条件,但面临一个问题。以编程方式更新约束条件iOS
当我尝试更新此首次(在viewDidLoad中或viewWillAppear中方法),它没有更新。如果我之后更新它(因为一些旋转等),那么它是正确的。 请告诉我为什么会发生这种情况,以及正确的方式/地点做什么?(因为我觉得约束更新后在viewWillAppear/DidLoad更新后的某处)。
我试过view.layoutIfNeeded以及但它没有帮助。我想这与viewDidLoad和其他viewController代理方法有关
P.S.我也在我的项目中使用尺寸类别,但我认为它与此无关,因为它在某些情况下工作
答
更新约束可能不起作用viewWillAppear
。 然而,它将在viewDidAppear
工作。
还有其他地方,你可能会覆盖,如:(使用static BOOL shouldRefreshView = NO;
首次)
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
if(shouldRefreshView) {
shouldRefreshView = NO;
[self.view layoutIfNeeded];
}
}
感谢。它的工作(Y) –
你选择了哪个选项? 'viewDidAppear'或'viewDidLayoutSubviews'? – SwiftArchitect
我选了“viewDidLayoutSubviews”。我认为这样更合适。 +我没有使用shouldRefreshView变量.. @SwiftArchitect –