2017-12-04 7 views
4

コレクションビューがあり、アイテムをいくつか挿入して変更している場合、デフォルトのレイアウトでは同時にフェードインされます。次々にそれらを消す可能性はありますか?iOS - UICollectionView - 複数のアイテムを一度に挿入するとき、どうやって同時にフェードインできますか?

私はUICollectionViewLayoutのサブクラス化を考えていましたが、そのように動作するかどうかはわかりません。

論理を追加して、一度に複数の挿入が行われないようにする必要はありますか? (アイテムを挿入して、1秒待ってから2番目のアイテムを挿入するように...手動で行う)より良い方法が必要です。私は(例えばasyncAfter)あなたは一度に一つでそれらをフェードしたい場合は任意のヘルプ

答えて

3

ため

おかげで、あなたのモデルに1を追加し、その1つのアイテムをリロードしてから遅延する必要があるとしている願っていますし、次のことをしてください。モデルにすべてを一度に追加することはできず、単純にコレクションビューの個々のアイテムのリロードを延期することはできません。モデルの更新とコレクションビューの適切なアイテムの再読み込みの両方を延期する必要があります。例えば:

private func append(_ objectsToAdd: [Foo]) { 
    for i in 0 ..< objectsToAdd.count { 
     DispatchQueue.main.asyncAfter(deadline: .now() + Double(i) * 0.25) { 
      self.objects.append(objectsToAdd[i]) 
      self.collectionView?.insertItems(at: [IndexPath(item: self.objects.count - 1, section: 0)]) 
     } 
    } 
} 

もたらすこと:

enter image description here

UICollectionViewLayoutのいかなるサブクラス化は必要ありません。

+0

私は完全に避けようとしていました。私が言ったように、手動でやりたいとは思わない。それ以外の方法がなければ、残念です。 – Quantm

+0

ええ、私は理解しますが、AFAIK、アニメーションを遅らせる方法はありません。手動でモデル更新と対応する 'insertItems'を延期するだけです。 – Rob

+0

私はあなたの答えに感謝します(コードスニペットは必要ではありませんでしたが、私はこのアプローチを知っています、もっと良い方法を探していました。私はちょっと待つつもりです(誰かがもっと便利な方法かもしれませんが)。それから私はこれを受け入れるつもりです。 – Quantm

関連する問題