У меня есть требование анимировать UICollectionView и UICollectionViewCell frame.Конечным результатом является то, что я, но между ними, кажется, что некоторые фантомные клетки смешиваются с реальными оживляемыми клетками.CV анимируется на другой размер, и ячейки CV должны соответствовать новому размеру на основе настроек, заданных для collectionViewLayout CV.
Вот отправная точка:
Вот как анимация начинает выглядеть:
Конечный результат, как и ожидалось:
Мое окончательное намерение:сделать это с помощью UIViewPropertyAnimator (), но вы видите ту же проблему, даже если анимация запускается со стандартной анимацией UIView.
Основной вызываемый метод - prepareLayout ().
internal var theLayout: UICollectionViewFlowLayout {
return (buttonsView.collectionViewLayout as? UICollectionViewFlowLayout)!
}
internal func prepareLayout() {
let spacing = buttonTheme.spacing * 2.0
// let theLayout = UICollectionViewFlowLayout()
theLayout.invalidateLayout()
buttonsView.frame = viewModel.frame
theLayout.itemSize = itemSize
theLayout.minimumInteritemSpacing = spacing
theLayout.minimumLineSpacing = spacing
buttonsView.contentInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing)
// buttonsView.performBatchUpdates({
buttonsView.setCollectionViewLayout(theLayout, animated: true)
self.buttonsView.reloadData()
// }, completion: nil)
buttonsView.setCollectionViewLayout(theLayout, animated: true)
}
Как видно, я поигрался с PerforBatchUpdates () и setCollectionViewLayout () CV, но безрезультатно.Мне нужно reloadData (), потому что такие вещи, как fontSize, меняются во время анимации, что будет более важно при использовании UIViewPropertyAnimator ().
Моя ячейка является подклассом UICollectionViewCell, в котором есть UIButton.Взаимодействие кнопки отключено, поэтому я могу обрабатывать все в резюме.
Мы ценим идеи о том, как исправить эту проблему.
Редактировать: 26 января Вот публичное репо, которое является урезанной версией приложения, но иллюстрирует проблему: https://github.com/Phantom-59/CVAnimatorTest