私のiOSアプリケーションでは、コンテンツをサーバーから動的に更新するUICollectionViewがあります。 UIollectionViewに10個のセル(インデックス0-9)があると仮定しましょう。他の10個のオブジェクトをダウンロードすると、それらをインデックス(0-9)に挿入し、古いアイテムをインデックス(10-19)にシフトします。アイテムを上部に挿入しながらUICollectionViewをスクロールさせないようにする
私の目標は、UICollectionViewのアニメーションを無効にすることです。トップ3にインデックス3の要素がある場合、他の10個のアイテムを追加すると、トップアイテムとして追加されますが、更新後はインデックス13になります)。
私はUIView.performWithoutAnimation方法で挿入するか、このコードを使用してUICollectionViewアイテムをラップ試してみました:
UIView.setAnimationsEnabled(false)
// insert items in collection view using perform batch updates
UIView.setAnimationsEnabled(true)
しかし、結果はまだ良いではないと私はトップレンジに項目を追加するとき、私のUICollectionViewはまだ「ランダム」にスクロールします。
3番目のアプローチは良いと思われる。私は違いを持ってそれを実装しました。私は私の最後のコンテンツのオフセットを覚えている、私はすべての項目を追加し、私はrememberedContentOffset + addedItemsTotalHeightにコンテンツオフセットを設定します。それは、挿入後、私はまだ覚えている細胞を見ていますが、視覚効果は非常に悪いです。挿入中にスクロールアップし、すべてのアニメーションを無効にした場合はスクロールします – lubilis
この副作用を避けるための解決策を見つけましたか? – AnthoPak
アニメーションは本当に完璧ではありませんが、私はそれがうまくいくようにいくつかのロジックを実装しました。アレイ内のすべてのセルの高さとその他のパフォーマンスの向上を保存するようなもの – lubilis