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にこの値を記録/与えるべきではありませんか? float の場合と同じように機能するため、これは問題ではありません。actualPosition がスクロールされたすべての位置の値を受け取るようにするにはどうすればよいですか?

4

1 に答える 1

1

画面には多くのピクセルがあり、スクロールしたものを移動する時間はわずかしかないため、これらの値は FPS によって「ジャンプ」されます。つまり、30fps で 1 秒間に 100 ピクセル移動すると、1 fps で 33 ピクセル値がジャンプします。したがって、+1 ではなく、すべてのステップで +3 を取得します。

画面全体が 1 フレームで飛んでしまうほど高速なスクロール ジェスチャが存在する可能性があるため、常に正確な位置を取得することは不可能です。したがって、「ジャンプ」は画面と同じ大きさになります。

于 2013-03-28T15:51:42.630 に答える