View生命周期中的最佳时间,以确定UIScrollView的屏幕大小

时间:2013-06-25 20:17:46

标签: ios uiscrollview

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

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

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

我很高兴承认viewWillAppear是创建按钮的正确位置,我的导航控制器可能错误地实例化了视图,但我的iOS-fu还不够强大,无法肯定地说。

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

1 个答案:

答案 0 :(得分:0)

别担心,你的方向正确:

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

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

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