在viewDidLayoutSubviews中以编程方式创建UIView

Dan*_*iel 0 uiview ios

我想以编程方式创建依赖于边界大小的UIViews self.view.我已经把代码放在了创建UIViews中viewDidLayoutSubviews.

问题是viewDidLayoutSubviews当我的viewController出现在屏幕上时多次调用,从而创建了UIView的多个实例.我想这可以通过使用某种旗帜来解决.

有一个更好的方法吗?代码应该放在视图控制器生命周期的其他地方吗?

Sun*_*han 5

您不应该创建UIView代码viewDidLayoutSubviews,viewDidLoad而应该创建代码.您可以将视图帧更新代码放入viewDidLayout.或者您可以使用autolayout,因此您不需要手动查看任何视图更新代码.我更喜欢自动布局.

  • 您还可以在`viewWillLayoutSubviews`中创建子视图.但是如果你在`viewDidLayoutSubviews`中创建它们,你将触发另一个布局传递.此外,由于属性可以是数组或字典,因此您不必为每个子视图都有单独的属性.您需要哪些属性实际取决于子视图的用途以及如何布局. (3认同)