Динамическое изменение высоты UICollectionViewCell с анимацией

Я хочу увеличить высоту верхней ячейки в моем представлении коллекции с помощью анимации. Проблема в том, что когда я обнаруживаю нажатие на ячейку, я пытаюсь анимировать высоту и установить новую высоту в делегате: - collectionView: layout: sizeForItemAtIndexPath: indexPath. Проблема Я вижу мгновенное обновление после аннулирования моего макета потока коллекции, и анимация происходит после слов. Я хочу, чтобы верхняя ячейка анимировала расширение до новой высоты и подтолкнула строки под ней вместе с анимацией.

Я использую только один раздел с несколькими строками. Должен ли я попытаться использовать два раздела и поместить верхнюю ячейку в первый раздел, а остальные во второй раздел? Могу ли я затем анимировать второй раздел вместе с высотой первого раздела?


person samonderous    schedule 01.03.2014    source источник
comment
Проверьте это stackoverflow.com/questions /13780153/   -  person manya    schedule 01.03.2014
comment
Это не работает, как ожидалось. Ячейка анимируется, но ее высота увеличивается, ячейка скрывается за видом следующей ячейки. Он не сдвигает следующую ячейку вниз, увеличивая общий размер содержимого.   -  person samonderous    schedule 04.03.2014


Ответы (1)


Вам нужно сделать это три шага:

1. Сделайте недействительным ваш collectionViewLayout

self.collectionView.collectionViewLayout.invalidateLayout()

2. Перезагрузите нужный indexPath или все данные внутри блока PerformBatchUpdates.

collectionView.performBatchUpdates({
            self.collectionView.reload(at: DESIRED_INDEXPATH)
        }, completion: nil)

3. Верните новую высоту, рассчитанную в методе делегата sizeForItemAtIndexpath.

person MarMass    schedule 20.02.2017