所以我有以下代码:

int actualPosition = self.collectionView.contentOffset.y;
NSLog(@"%i", actualPosition);

输出为:
2013-03-28 15:36:42.737 test[10544:907] 484
2013-03-28 15:36:42.754 test[10544:907] 490
2013-03-28 15:36:42.770 test[10544:907] 512
2013-03-28 15:36:42.787 test[10544:907] 550

我现在的问题是:为什么它会“跳过”(如为什么“actualPosition”从没有这些值)485-489、491-511和513-549?即使我滚动得更快,它也不应该为所有“位置”记录/赋予actualPosition这个值吗?它对于float的工作方式相同,因此无关紧要。我该如何解决这个问题,以便ActualPosition可以接收到已滚动过的每个位置的值?

最佳答案

由于屏幕上有很多像素,只有一些时间来移动滚动的内容,因此FPS会“跳过”这些值。换句话说,如果您以30 fps在1秒钟内移动100像素,则1 fps将使数值跳升33像素。因此,您每步将获得+3而不是+1。

始终不可能获得准确的位置,因为可能会有一些滚动手势如此之快,以致整个屏幕只能在一帧中飞过。因此,“跳跃”将与屏幕一样大。

关于ios - contentOffset跳过日志中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15684838/

10-12 15:20