在viewDidLayoutSubviews

时间:2015-11-29 04:07:13

标签: ios uiview

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

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

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

2 个答案:

答案 0 :(得分:5)

您不应该在$launched = new DateTimeImmutable(); $expired = clone $launched; $expired->modify("+$expiry days"); 中创建<?php echo $this->escapeHtml($_item->getCustom_attribute()) ?> 代码,而应该在UIView中创建代码。您可以将视图框更新代码放在viewDidLayoutSubviews中。或者您可以使用自动布局,因此您不需要手动查看任何视图更新代码。我更喜欢自动布局。

答案 1 :(得分:0)

在viewDidLayoutSubviews的方法中,您可以获取更新的UIControls的帧大小,之后您可以在viewDidAppear中以编程方式创建UIViews。

虽然我认为你不应该在viewDidLoad方法中创建UIViews,但在自动布局中,在调用viewDidLayoutSubviews之前,你无法获得正确的视图大小。