Остановите нежелательную флэш-анимацию на UICollectionViewCell после вызова view.layoutIfNeeded - PullRequest
1 голос
/ 31 мая 2019

У меня есть экран чата, созданный с помощью UICollectionView, и есть нижнее представление контейнера, которое содержит текстовое представление и некоторые кнопки

Когда я обновляю нижнее ограничение представления контейнера и вызываю layoutIfNeeded, это приводит к странным "мигающая анимация на ячейках.

На willDisplayCell я сделал это

UIView.performWithoutAnimation {
    cell.layoutIfNeeded()
}

Но похоже, что это ни на что не влияет.

Я использую Typist для работы с клавиатуройи вот как я анимирую свои ограничения

        keyboard
            .toolbar(scrollView: mainView.chatCollectionView)
            .on(event: .willChangeFrame) { [weak self] options in
                guard let self = self else { return }
                guard self.mainView.sendMessageTextView.isFirstResponder else { return }
                let height = options.endFrame.height
                self.mainView.bottomContainerViewBottomConstraint.constant = -max(0, height - self.view.safeAreaInsets.bottom)
                UIView.animate(withDuration: 0, delay: 0, options: .curveEaseIn, animations: {
                    self.mainView.layoutIfNeeded()
                }, completion: { _ in })
            }
            .on(event: .willHide) { [weak self] options in
                guard let self = self else { return }
                self.mainView.bottomContainerViewBottomConstraint.constant = 0
                UIView.animate(withDuration: 0, delay: 0, options: .curveEaseIn, animations: {
                    self.mainView.layoutIfNeeded()
                }, completion: { _ in })
            }
            .start()

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

Как вы можете видеть на этомвидео ячейки как бы "мигают", есть ли способ остановить это мигание?

https://www.youtube.com/watch?v=sjZ62df5i2w

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