【问题标题】:Why "Y" value in bounds property for UITableView and UIScrollView is initially "-64"?为什么 UITableView 和 UIScrollView 的边界属性中的“Y”值最初是“-64”?
【发布时间】:2015-07-20 19:57:47
【问题描述】:

当我在

中打印 tableView.bounds

ViewDidLoad 和 ViewWillAppear,是 (0.0, 0.0, 375.0, 667.0)

但在 ViewDidAppear 和 scrollViewDidScroll 方法中,是 (0.0, -64.0, 375.0, 667.0)

为什么“Y”值是负数。当我向下滚动时,它会继续减少负值。根据我的假设,向下滚动时它应该在正轴上增加,当向上滚动时,视图原点上升,所以它应该在向上滚动时在负轴上减少。这意味着,它的发生方向与我的假设相反。为什么会这样?

有人能解释一下吗?

【问题讨论】:

    标签: ios objective-c uitableview uiscrollview uicollectionview


    【解决方案1】:

    64 是导航栏和状态栏的高度。同样在 viewDidLoad 和 viewWillAppear 中,边界没有完成布局。您应该在 viewDidLayoutSubviews 中获得正确的界限。

    至于为什么向下滚动时y轴变为负数,那是因为您正在打印边界。如果您想要问题中提到的期望值,则需要使用tableView.contentOffset.y。 我认为这个关于框架和边界之间差异的 SO question 也会有所帮助。

    【讨论】:

    • 您好 SFF,感谢您的回答。但是,我对为什么界限是负数感到困惑?能解释清楚吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多