Я сталкиваюсь с проблемой с isHighlighted
состоянием imageView внутри ячейки представления коллекции: мне не удается анимировать переход между двумя изображениями так, как я нацеливаюсь.
Каждая настраиваемая ячейкамоего представления коллекции имеет 3 вида:
- UIImageView : фоновое изображение с подсвеченными и не подсвеченными связанными .pngs
- второй UIImageView : другое изображение с подсвеченными и не подсвеченными связанными .pngs как подпредставление предыдущего UIImageView
- пользовательского UILabel: текстовая метка
Когда я касаюсь ячейки, оба ImageViewsмгновенно перейти в выделенное состояние, но я бы хотел, чтобы они вместо этого перешли в это состояние (простой переход CrossDissolve)
Я пробовал 2 разных подхода: переопределение метода isSelected
в пользовательском классе ячеек и размещение анимации вcollectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
Переопределение isSelected свойство :
override var isSelected: Bool {
didSet {
UIView.transition(with: cellImageView, duration: 1, options: .transitionCrossDissolve, animations: {
self.cellImageView.setNeedsLayout()
self.cellImageView.layoutIfNeeded()
self.cellImageView.isHighlighted = self.isSelected
})
}
}
Таким образом, я не получаю анимацию, когда нажимаю на ячейку в симуляторе, либо когда ячейка выбрана, либо когда она теряет выбранное состояние, кроме случаев, когда я щелкаю и удерживаю ячейку : тогда я получаю анимацию предыдущей ячейки, теряющей свою выделенную ячейку (другими словами, у меня есть переход предыдущего выбранного изображения ViewView с isHighlighted(true)
на isHighlighted(false)
).
didSelectItemAt indexPath Method
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! SubMenuCell
UIView.transition(with: cell, duration: 1.0, options: .transitionCrossDissolve, animations:
cell.setNeedsLayout()
cell.layoutIfNeeded()
cell.cellImageView.isHighlighted = cell.isSelected
})
}
Этот метод не запускает анимацию, когда ячейка выбрана, но обеспечивает анимацию перехода, когда ячейка перемещается от isSelected(true)
до isSelected(false)
: другими словами,Я вижу, что предыдущая выбранная ячейка исчезает , и я не вижу выбранную ячейку , исчезающую .
Буду благодарен за любые советы относительно того, почему онане работает и как это можно исправить!
Спасибо всем за то время, которое вы потратили на чтение и ответ!Лучшее,