正如标题所解释的那样,我正在我的视图控制器的loadView中以编程方式创建一个UIScrollView,然后我将设置为self.view。
_pagingScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = _pagingScrollView;
如果我在loadView结束时检查_pagingScrollView.frame,它等于
{{0,0},{320,480}}。
但是,如果我在scrollViewDidScroll
委托中检查相同的属性,则会切换到
{{0,0},{320367}}
如何分配/初始化我的scrollView,以便它的高度从一开始就将tab / nav栏考虑在内,并给我367?我知道我可以简单地硬编码367,但我想知道这里发生了什么以及为什么它从一个值开始然后改变。
答案 0 :(得分:1)
为什么不创建具有已知边界的UIScrollView
_pagingScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,387];
或从UIScreen
边界
答案 1 :(得分:0)
我相信你看到的问题是由你使用[UIScreen mainscreen]引起的,它引用了整个窗口(320,480)并且不关心它内部的Nav / Tab视图。
您可能希望使用applicationFrame方法,而不是使用它。
请参阅此相关帖子 - How to get the actual [UIScreen mainScreen] frame size?
此外,如果您的vc的superView / superViewController已设置,您可以使用它们来获取更相关的大小信息,因为MainScreen仍将仅引用整个窗口,而不是采用子视图控制器,例如导航/标签。