我需要一些帮助来理解viewDidLAyoutSubviews
方法以及如何安全地使用它。
我需要在viewDidAppear
方法之前以编程方式编辑我的一些子视图。为了使其正常工作,我当然需要等到目标子视图被布局后再编辑它们。
现在我认为这是viewDidLayoutSubviews
方法的用途,但是当我测试它时,我发现它在我的viewDidAppear
方法之前实际上被调用了两次。我只是在第一次调用viewDidLayoutSubviews
时尝试编辑我的子视图,因为我只想运行一次[self editMySubviews]
,但是目标子视图还没有准备就绪并且搞砸了。这就是我尝试的方式:
- (void)viewDidLayoutSubviews {
if (!myBoolean) {
[self editMySubviews];
myBoolean = YES;
}
}
当然,如果我删除if-statement
,它会在下次调用该方法时自行修复,但我只想要调用[self editMySubviews]
一次。
所以我的问题是,当我可以在[self editMySubviews]
方法之前调用viewDidAppear
方法,并且100%确定所有子视图都可以编辑?现在在我的情况下,viewDidLayoutSubviews
在viewDidAppear
之前被调用两次,但每次都是这样吗?在第二次调用[self editMySubviews]
后调用viewDidLayputSubviews
是否安全?
答案 0 :(得分:0)
根据你的评论,你说
在viewdidload之后,您将从view.bounds获得正确的大小 这样您就可以轻松设置/更新约束并在此末尾添加 setNeedsUpdateConstraints和layoutIfNeeded方法调用