UICollectionView и UICollectionViewCell анимированный фрейм - PullRequest
0 голосов
/ 19 января 2019

У меня есть требование анимировать UICollectionView и UICollectionViewCell frame.Конечным результатом является то, что я, но между ними, кажется, что некоторые фантомные клетки смешиваются с реальными оживляемыми клетками.CV анимируется на другой размер, и ячейки CV должны соответствовать новому размеру на основе настроек, заданных для collectionViewLayout CV.

Вот отправная точка: enter image description here

Вот как анимация начинает выглядеть: enter image description here

Конечный результат, как и ожидалось: enter image description here

Мое окончательное намерение:сделать это с помощью 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

...