我有一个 .xib 包含一个视图,该视图本身包含顶部和底部附件视图(导航、页面控件)和一个 UIScrollView。它的高度取决于我是在 iPhone 4 还是 5(3.5" 或 4")上运行。在运行时,我将包含视图移到屏幕外,使用 UIButtons 填充滚动视图以构建可滚动的启动板,然后将其从底部滚动到屏幕上。点击一个按钮会显示另一个视图。
在较小的屏幕上,我只想在滚动视图中显示三个按钮,在较大的屏幕上显示四个。所以我需要知道滚动视图出现时的高度,在它实际出现之前。我希望在视图生命周期中的某个时刻(viewWillAppear 等)提供这些信息,但这似乎是唯一正确的地方是 viewDidAppear。此时视图已经出现在屏幕上,创建按钮意味着它们突然出现,并且在屏幕上没有很好地滚动。
.xib 中的顶级视图设置为 Retina 4 FullScreen。
我很高兴承认 viewWillAppear 是创建按钮的正确位置,并且我的导航控制器可能正在错误地实例化视图,但我的 iOS-fu 还不足以肯定地说。
我的解决方案是检测屏幕尺寸并硬连线按钮高度。有没有更好(更优雅、面向未来和规范)的方法来做到这一点?