0

我有一个 .xib 包含一个视图,该视图本身包含顶部和底部附件视图(导航、页面控件)和一个 UIScrollView。它的高度取决于我是在 iPhone 4 还是 5(3.5" 或 4")上运行。在运行时,我将包含视图移到屏幕外,使用 UIButtons 填充滚动视图以构建可滚动的启动板,然后将其从底部滚动到屏幕上。点击一个按钮会显示另一个视图。

在较小的屏幕上,我只想在滚动视图中显示三个按钮,在较大的屏幕上显示四个。所以我需要知道滚动视图出现时的高度,在它实际出现之前。我希望在视图生命周期中的某个时刻(viewWillAppear 等)提供这些信息,但这似乎是唯一正确的地方是 viewDidAppear。此时视图已经出现在屏幕上,创建按钮意味着它们突然出现,并且在屏幕上没有很好地滚动。

.xib 中的顶级视图设置为 Retina 4 FullScreen。

我很高兴承认 viewWillAppear 是创建按钮的正确位置,并且我的导航控制器可能正在错误地实例化视图,但我的 iOS-fu 还不足以肯定地说。

我的解决方案是检测屏幕尺寸并硬连线按钮高度。有没有更好(更优雅、面向未来和规范)的方法来做到这一点?

4

1 回答 1

0

别担心,你的方向是正确的:

viewWillAppear 是视图生命周期中的正确方法,其中该视图及其子视图的框架已被完全计算并且尚未绘制任何内容。您可以在此处对视图的标准行为进行更正。

当调用 viewDidAppear 时,您将获得与 viewWillAppear 中相同的关于视图元素位置和大小的信息。但是此时,动画和视图本身已经绘制好了。

也就是说,您为什么要使用 viewWillApear。

于 2013-06-26T04:27:06.443 回答