我遇到了一个问题,表明我可能无法正确实施设计模式。我有动态子视图,其大小取决于语言。当我提出模态视图时,我在viewDidLoad期间设置了布局。我注意到UILabel对象没有正确显示,发现问题是viewDidLoad期间模态视图的大小与显示视图时的大小不同。
viewDidLoad s 768期间模态视图的宽度。视图出现后,宽度为540.
这表明我应该在viewWillAppear期间设置布局,而不是在viewDidLoad期间。
这似乎与我对DRY原理的理解相矛盾,如果我将它应用于执行,因为一旦加载视图后布局不会改变,所以每次出现视图时我都会不必要地重复布局代码。 (我知道在我的例子中,语言设置可以在模态的演示之间进行更改,但可能还有其他示例,其中不存在此类动态。)
我以相同的方式在非模态视图中实现布局 - 在viewDidLoad中。
我应该这样做吗?
答案 0 :(得分:0)
假设视图不会改变是不正确的。例如,改变方向时。通常在viewDidLoad中设置视图,并结合正确的自动调整大小掩码,在大多数情况下就足够了。如果在视图调整大小时需要更好地控制设置,则应覆盖viewWillLayoutSubviews / viewDidLayoutSubviews,并在那里重新排列视图。因此,在viewDidLoad中,您可以添加子视图及其内容,然后在布局中设置其大小和位置。