UIScrollView边界尚未在“viewDidLoad”中调整大小

时间:2010-11-11 01:12:19

标签: objective-c cocoa-touch ipad uiscrollview

我有一个UIViewController子类,其视图在NIB文件中配置。该视图具有UIScrollView子视图。

UIScrollView几乎占用了整个NIB文件,但它的超级视图作为子视图添加到更小的视图(在不同的NIB中配置) - 例如UIScrollView是它自己的NIB高度的80%,但最终只是应用程序窗口高度的10%。

当我在viewController的viewDidLoad方法中调用[scrollView bounds] .size.height时,我得到scrollView相对于它自己的NIB的高度,而不是它最终调整大小的高度,如其超级视图所指示的那样(例如80窗口高度的百分比而不是10%。

如果稍后调用[scrollView bounds] .size.height(例如处理旋转事件),我会得到正确的值。

如何最初获得正确调整大小的值?

2 个答案:

答案 0 :(得分:7)

您是否尝试过在viewWillAppear:viewDidAppear处理?

答案 1 :(得分:0)

假设我正在关注,在加载视图控制器之后必须有一些点,你抓住.view并将其插入到其他子视图中?如果是这样,那么边界将被调整。你无法在viewDidLoad中获取它们,因为视图无法知道将来你将如何处理它。即使你将它作为子视图插入的调用是加载视图控制器后你做的第一件事,它是视图访问器,它会导致视图加载,因此viewDidLoad,所有这些都在你实际将视图放到任何地方之前

由于bounds有一个getter和一个setter,它应该符合键值编码,在这种情况下你可以使用viewDidLoad在bounds上注册一个观察者,并做一些你在边界改变时需要做的事情。