0

正如标题所解释的,我正在我的视图控制器的 loadView 中以编程方式创建一个 UIScrollView,然后我将其设置为 self.view。

_pagingScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = _pagingScrollView;

如果我在 loadView 的末尾检查 _pagingScrollView.frame,它等于

{{0,0},{320,480}}。

但是,如果我在我的scrollViewDidScroll委托中检查相同的属性,它会切换到

{{0,0},{320,367}}

我如何分配/初始化我的滚动视图,以便它的高度从一开始就考虑标签/导航栏,并给我 367?我知道我可以简单地对 367 进行硬编码,但我想知道这里发生了什么以及为什么它以一个值开始然后发生变化。

4

2 回答 2

1

为什么不创建UIScrollView具有已知界限的

_pagingScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,387];

UIScreen或从边界中减去 TabBar 或 NavBar 的高度

于 2012-08-15T16:51:25.177 回答
0

我相信您看到的问题是由您使用 [UIScreen mainscreen] 引起的,它指的是整个窗口(320,480)并且不关心其中的导航/选项卡视图。

您可能希望使用 applicationFrame 方法,而不是使用它。

请参阅此相关帖子-如何获取实际的 [UIScreen mainScreen] 帧大小?

此外,如果设置了 vc 的 superView/superViewController,则可以使用它们来获取更多相关的大小信息,因为 MainScreen 仍将仅引用整个窗口,而不考虑子视图控制器,例如 nav/tabs。

于 2012-08-15T16:50:58.677 回答