【问题标题】:Setting frame of UIScrollView sitting between Nav/Tab barsUIScrollView 的设置框架位于 Nav/Tab 栏之间
【发布时间】:2012-08-15 16:40:48
【问题描述】:

正如标题所解释的,我正在我的视图控制器的 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 进行硬编码,但我想知道这里发生了什么以及为什么它从一个值开始然后发生变化。

【问题讨论】:

    标签: iphone objective-c ios uiscrollview


    【解决方案1】:

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

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

    或从UIScreen bounds 中减去 TabBar 或 NavBar 的高度

    【讨论】:

      【解决方案2】:

      我相信您看到的问题是由您使用 [UIScreen mainscreen] 引起的,它指的是整个窗口 (320,480),而不关心其中的 Nav/Tab 视图。

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

      查看此相关帖子--How to get the actual [UIScreen mainScreen] frame size?

      另外,如果你的 vc 的 superView/superViewController 设置了,你可以使用它们来获取更多相关的尺寸信息,因为 MainScreen 仍然只会引用 整个 窗口,而不是子视图控制器,例如考虑到导航/标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 2012-04-18
        • 2022-10-16
        • 2021-04-09
        • 1970-01-01
        • 2020-03-17
        • 2015-01-09
        相关资源
        最近更新 更多