Коллекция Просмотр Вставить элемент Странная анимация - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть представление сбора сообщений, повернутое на 180 градусов (так что ячейки добавляются снизу).

collectionView?.transform = CGAffineTransform.init(rotationAngle: (-(CGFloat)(Double.pi)))

cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi))

Я хочу использовать опцию insertItem при добавлении новых ячеек, но это заставляет ячейки выполнять неуклюжую анимацию, когда видимые на экране ячейки переворачиваются вверх дном и переворачиваются на противоположную сторону. Однако, когда они прокручиваются из поля зрения и возвращаются в поле зрения, они сбрасываются в правильные позиции.

Это видео об ошибке: https://www.youtube.com/watch?v=2X8FjOf5AqA

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Я считаю, что я исправил проблему, создав UIView внутри ячейки пользовательского представления коллекции и поместив весь контент (например, текстовый пузырь) внутри этого представления, а затем вращая представление на pi (вместо вращения ячейки на pi) , Я все еще поворачивал представление коллекции, используя ответ Брэдли выше.

collectionView?.transform = CGAffineTransform.init(rotationAngle: CGFloat(Double.pi))
0 голосов
/ 06 ноября 2018

Это происходит потому, что когда вы добавляете новую ячейку, вызывается performBatchUpdates, все видимые ячейки перерисовываются, и преобразование применяется снова , по существу, удаляя преобразование.

Вы хотите, чтобы это происходило только один раз, поэтому клетки сохранят свое преобразование. Для этого убедитесь, что преобразование ячеек соответствует преобразованию collectionView, которое, как мы знаем, не изменится (поскольку само представление коллекции не перерисовывается на performBatchUpdates).

Кроме того, вам не нужно инвертировать одно из преобразований - вращение на -π равно вращению на π.

collectionView?.transform = CGAffineTransform.init(rotationAngle: CGFloat(Double.pi))

cell.transform = collectionView!.transform
...