3

テーブルビューセルに進行状況インジケーターがあり、ユーザーがテーブルビューを操作している間は進行状況が更新されません。インタラクションが停止すると、インジケーターは本来あるべき場所にジャンプします。

ユーザーがテーブルビューをスクロールしている場合でもアニメーションを続行できるように、これをどのように回避できますか?

それらをランループに追加できますか?インタラクションとアニメーションの両方をメインスレッドで実行する必要がある場合、どのような回避策を実行できますか?

4

1 に答える 1

3

まず、これらの進行状況インジケーターを本当に更新する必要があることを確認する必要があります-UIScrollViewスクロール時の型クラスのデフォルトの動作は、応答性を維持するために、その中のUI更新を一時停止することです。特に古いデバイスでは、何か特別なことをしようとすると、スクロール速度が驚くほど速く低下する可能性があることがわかりました。

警告はさておき、これをどのように行うのですか?この質問には解決策があるようです。簡単な要約は次のとおりです。

  • スクロールすると、runloopがUITrackingRunLoopModeになります
  • runloopがこのモードになっている間、更新コードはトリガーされません
  • 解決策:NSTimer進行状況インジケーターの更新をトリガーし、そのタイマーを実行してNSRunLoopCommonModes、スクロール中にも起動するようにします。

それでおしまい。UIViewスクロール中は更新は問題ではなく、更新をトリガーするコードを実行することは問題です。「スクロールプルーフ」のタイマーを使用すると、インジケーターが正常に更新されます。リンクされた質問にはいくつかの良いサンプルコードがありますので、クリックして読んでください

于 2012-12-08T19:02:30.090 に答える