UICollectionView reloadSections с анимацией

Я хотел бы перезагрузить UICollectionView с помощью некоторой анимации. В UITableView есть метод под названием reloadSections:withRowAnimation. Но в UICollectionView есть только reloadSections.

Как настроить анимацию reloadSections? Я определенно видел это в приложениях в App Store.

Ответы

Ответ 1

Просто сделайте это так:

[self.collectionView performBatchUpdates:^{
    [self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
} completion:nil];

Ответ 2

Версия Swift 3:

collectionView.performBatchUpdates({
    let indexSet = IndexSet(integer: 0)
    self.collectionView.reloadSections(indexSet)
}, completion: nil)

Ответ 3

Эта статья здесь стоит прочитать: http://victorlin.me/posts/2016/04/29/uicollectionview-invalid-number-of-items-crash-issue

TL;DR:

Итак, оказалось, что executeBatchUpdates вызывает collectionView (: numberOfItemsInSection:) прежде, чем вызвать данное закрытие, чтобы узнать номера позиций. Затем он вызывает закрытие и, в конце концов, снова вызывает collectionView (: numberOfItemsInSection:), чтобы проверить номер. И здесь возникает исключение утверждения.