当我打印tableView.bounds

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

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

为什么“Y”值为负。向下滚动时,它会不断减小负值。根据我的假设,当向下滚动时,它应在正轴上增加;当向上滚动时,视图原点将上升,因此,当向上滚动时,它应在负轴上减小。这意味着,它的发生方向与我的假设相反。为什么会这样呢?

有人可以解释一下吗?

最佳答案

导航栏和状态栏的高度为64。同样在viewDidLoad和viewWillAppear中,边界没有布置好。您应该在viewDidLayoutSubviews中获得正确的边界。

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

10-07 19:05
查看更多