3

ここで最初の質問、親切にしてください :P

無限の UIScrollView を作成しようとしています (「StreetScroller」Apple デモ プロジェクトを使用しました)。UIScrollView が contentSize のほぼ最後にある場合、contentOffset は contentSize の中央に設定され、すべてのサブビューが移動されるため、ユーザーに対して透過的になります。

スクロールが遅いときは正しく動作しますが、スクロールが速すぎて UIScrollView の最後に到達すると、事態が奇妙になります。

私の場合、frame.size.width = 320 および contentSize.x = 3 * frame.size.width で UIScrollView を使用します。スクロールが速すぎて contentSize の最後に到達すると、ログで次のようになります (つまり、右にスクロールしたときに x > 560 の場合)。

--> 慣性により UIScrollView がスクロールしている

SetContentOffset called width x : 504.730072
SetContentOffset called width x : 516.878967
SetContentOffset called width x : 528.489990
SetContentOffset called width x : 540.347656
SetContentOffset called width x : 550.754028
SetContentOffset called width x : 561.200378

--> UIScrollView が contentSize の最後に到達したので、再センタリングします

The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000

--> ここに問題があります。UIScrollView は contentOffset.x の変更を考慮せず、最後に使用した contentOffset.x 値でアニメーションを続行します....

SetContentOffset called width x : 571.421753
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
SetContentOffset called width x : 581.283447
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
SetContentOffset called width x : 610.100952

そして、これはアニメーションが終了するまで続きます。

誰かが contentOffset を設定し、 UIScrollView にアニメーションを強制的に更新させるための解決策を持っている場合:)

私はスタックオーバーフローと無限UIScrollViewに関する他のウェブサイトのほとんどすべてのトピックを読んだ. そして、スクロール中に contentSize を変更したくありません(右またはボットでスクロールする場合にのみ機能します...)

4

1 に答える 1

0

iOS Simulator 4.3 で実行されている Apple StreetScroller の例で、この問題に気付きました。

ここでこの質問を見ました: Infinite UIScrollView は、iOS5 ではなく iOS4.3 で奇妙な動作を取得し、iOS 5 シミュレーターでテストしたところ、期待どおりに動作することを確認できます。

4.3 の同じコードで何が問題なのかわかりません。

于 2012-01-13T22:51:40.330 に答える