#ios #swift
#iOS #swift
Вопрос:
Итак, у меня есть CollectionView, который привязан к другому подвиду внутри моего ViewController. Оранжевый вложенный просмотр привязан к нижней части панели навигации, и его значения высоты и альфа анимируются.
Когда он анимирован, collecitonView сдвигается вниз во время анимации. Хотя, как вы увидите, некоторые нижние ячейки исчезают перед анимацией, из-за чего она выглядит неровной.
Это функция, которая настраивает вложенные представления ViewController:
private func setupSubviews() {
view.addSubview(newMessageView)
NSLayoutConstraint.activate([
newMessageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
newMessageView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
newMessageView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])
newMessageView.heightConstraint = newMessageView.heightAnchor.constraint(equalToConstant: 0)
newMessageView.heightConstraint?.isActive = true
view.addSubview(messagesCollectionView)
messagesCollectionView.anchor(top: newMessageView.bottomAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
}
Это вызываемая функция:
@objc func newMessage() {
toggleHeader = !toggleHeader
UIView.animate(withDuration: 1.0, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: {
if (self.toggleHeader) {
self.newMessageView.heightConstraint?.constant = 200
} else {
self.newMessageView.heightConstraint?.constant = 0
}
self.view.layoutIfNeeded()
})
}
Я просто изменяю ограничение высоты, которое я ввел. Я полагаю, что это связано с функцией didEndDisplaying, которая определяет, что ячейки не будут видны, и отключает их.
Как бы мне изменить или улучшить это? Или есть способ остановить CollectionView от удаления не отображаемых ячеек?
Спасибо
Комментарии:
1. Поделитесь своим кодом, пожалуйста
2. ОК. Я обновил его.
Ответ №1:
Неважно. Исправлено.
Изменен нижний якорь CollectionView на view.safeAreaLayoutGuide.bottomAnchor.
Комментарии:
1. Я собирался сказать, что (: На самом деле подумал, что вам также следует добавить setLayoutIfNeeded в messagesCollectionView, но если это работает так, тогда идеально