我想以编程方式创建依赖于self.view
边界大小的UIViews。我已经将代码放在viewDidLayoutSubviews
中创建UIViews。
问题是当我的viewController出现在屏幕上时多次调用viewDidLayoutSubviews
,从而创建了UIView的多个实例。
我认为这可以通过使用某种旗帜来解决。
有更好的方法吗?代码应该放在视图控制器生命周期的其他地方吗?
答案 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之前,你无法获得正确的视图大小。