0

我遇到了一个问题,表明我可能不正确地实现了设计模式。我有动态子视图,其大小取决于语言。当我呈现一个模态视图时,我在 viewDidLoad 期间设置了布局。我注意到 UILabel 对象没有正确显示,并发现问题在于 viewDidLoad 期间模态视图的大小与显示视图时的大小不同。

viewDidLoad 期间模态视图的宽度为 768。视图出现后,宽度为 540。

这表明我应该在 viewWillAppear 期间设置布局,而不是在 viewDidLoad 期间。

这似乎与我对 DRY 原则的理解相矛盾,如果我将其应用于执行,因为一旦加载视图,布局就不会改变,所以每次视图出现时我都会不必要地重复布局代码。(我知道在我的示例中,语言设置可以在模态演示之间更改,但可能还有其他示例不存在这种类型的动态。)

我以同样的方式在非模态视图中实现布局——在 viewDidLoad 中。

我应该以不同的方式做这件事吗?

4

1 回答 1

0

假设视图不会改变是不正确的。例如,在改变方向时。在大多数情况下,通常在 viewDidLoad 中设置您的视图以及正确的自动调整大小掩码就足够了。如果您需要更好地控制视图调整大小时的设置,您应该覆盖 viewWillLayoutSubviews/viewDidLayoutSubviews,并在那里重新排列您的视图。因此,在 viewDidLoad 中,您将添加您的子视图并设置它们的内容,然后在布局中设置它们的大小和位置。

于 2012-06-08T05:22:37.487 回答