1

所以我有以下代码:

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这个值,即使我滚动得更快?它对浮点数的工作方式相同,所以这无关紧要。我该如何解决这个问题,以便实际位置接收已滚动的每个位置的值?

4

1 回答 1

1

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

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

于 2013-03-28T15:51:42.630 回答