我需要一些帮助来了解viewDidLAyoutSubviews
方法以及如何安全地使用它。在viewDidLayoutSubviews之后调用一次方法
我需要在viewDidAppear
方法之前以编程方式编辑我的一些子视图。为了使它正常工作,我当然需要等到目标子视图放好后再编辑它们。
现在我认为这是viewDidLayoutSubviews
方法的用处,但是当我测试它时,我发现它实际上在我的viewDidAppear
方法之前调用了两次。我试图编辑我的子视图只有第一次viewDidLayoutSubviews
被称为,因为我只想运行[self editMySubviews]
一次,但是然后目标子视图没有准备好,它搞砸了。这是我尝试:
- (void)viewDidLayoutSubviews {
if (!myBoolean) {
[self editMySubviews];
myBoolean = YES;
}
}
当然,如果我删除它自我修复下一次调用该方法的if-statement
,但我只想[self editMySubviews]
被调用一次。
所以我的问题是,当我可以在viewDidAppear
方法之前调用[self editMySubviews]
方法,并且100%确定所有子视图都可以编辑?现在在我的情况下,viewDidLayoutSubviews
在viewDidAppear
之前被调用两次,但每次都会这样吗?在第二次调用viewDidLayputSubviews
之后拨打[self editMySubviews]
是否安全?
你在做什么'editMySubviews'? – dan
根据其在不同设备上不同的superView.frame.size.width编辑一些按钮约束 – Peter
那么为什么你只需要做一次?每当子视图布局考虑超视图尺寸变化时,您都应该这样做。 – dan