Как анимировать изменение размера ячейки UICollectionView, которая также имеет динамический размер? - PullRequest
0 голосов
/ 22 апреля 2019

У меня проблемы с анимацией изменения высоты в ячейке UICollectionView.Все ячейки содержат метку с текстом, поэтому ячейки имеют динамический размер и используют Auto Layout.Ячейка должна увеличиваться на 100 пунктов, когда я нажимаю на нее, и должна толкать другие ячейки вниз.

Я уже смотрел на этот вопрос: UICollectionView: Анимация изменения размера ячейки при выделении

Я тоже это проверил, та же проблема: Анимировать ячейки uicollectionview при выделении

Кажется, предполагается, что все ячейки имеют одинаковый размер, как и все ответыкажется, работает, но игнорировать клетки, которые больше, чем предполагаемый размер.Вот как это должно выглядеть:

Theoretical Layout

Вот как это выглядит после вышеуказанных решений:

Problematic Layout

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

Я изменяю размеры ячеек индивидуально с помощью метода sizeForItemAt.Это в методе didSelectItemAt, и я ближе всего к тому, чтобы заставить его работать.

self.questions[indexPath.row].open = !self.questions[indexPath.row].open
collectionView.collectionViewLayout.invalidateLayout()
cell.bgViewHeightConstraint?.constant += 100
    UIView.animate(
        withDuration: 0.55,
        delay: 0.0,
        usingSpringWithDamping: 0.5,
        initialSpringVelocity: 3.0,
        options: UIView.AnimationOptions(),
        animations: {
           collectionView.layoutIfNeeded()
    }, completion: nil)

Даже при этом вид все еще мигает секунду и сбрасывается, так что вы можете видеть, что он снова раскладывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...