2

我有一个从 nib 加载的视图控制器,其中定义了一个高度为 346 像素的滚动视图。但是,当我这样做时:

int h = scrollView.frame.size.height;
NSLog(@"%d",h);

在 viewDidLoad 我得到 375。

我需要 viewDidLoad 中的适当高度(或其他类似方法),以便我可以根据高度以编程方式设置滚动视图的内容(不希望它垂直“溢出”,仅水平“溢出”,它的分页)。

滚动视图打开了每一行自动调整大小。(全是鲜红色)。奇怪的是,当视图加载时,我可以看到滚动视图是(正确的)346 像素高而不是 375,因此它必须在 viewDidLoad 和显示视图之间的某个位置更改为正确的值。

我在这里陷入了死胡同,任何获得适当大小的视图的方法都会非常有帮助。在此先感谢,如果您需要更多信息,请发表评论。

编辑:我解决它的方法是在 viewDidLoad 中放置一个 0.1 秒的计时器,当调用该计时器时,我做了我需要做的工作。这有点像黑客,所以任何其他建议都将不胜感激。

4

2 回答 2

4

执行附加布局类型计算的正确位置通常在viewWillLayoutSubviews或中viewDidLayoutSubviews文档在这里。这也来自“处理视图旋转”部分:

viewWillLayoutSubviews在视图由其父级调整大小和定位后,也会调用该方法。如果在方向更改发生时视图控制器不可见,则永远不会调用旋转方法。但是,viewWillLayoutSubviews当视图变得可见时调用该方法。

于 2013-06-19T19:54:04.187 回答
0

看看这个链接。您的子视图尚未在超级视图中放置和布局。例如,获取您的视图大小viewDidAppear:

于 2013-06-19T19:46:57.553 回答