Как анимировать UICollectionViewCell при выделении с использованием IGListKit
Мне не удалось использовать функции didHighlightItem и didUnhighlightItem для правильной анимации при нажатии на ячейку, поскольку я не могу получить доступ к номеру секции ячейки. Мне было интересно, правильно ли я решаю проблему или есть способ доступа к индексу секции SectionController в представлении коллекции. Мой код выглядит следующим образом:
class PersonSectionController: ListSectionController {
var current: Person?
override init() {}
override func didUpdate(to object: Any) {
if let person = object as? Person {
current = person
}
}
// Number of items displayed per object
override func numberOfItems() -> Int {
return 1
}
// Dequeue and configure cell
override func cellForItem(at index: Int) -> UICollectionViewCell {}
// Returns the required cell size at the given index
override func sizeForItem(at index: Int) -> CGSize {}
override func didHighlightItem(at index: Int) {
if let viewController = self.viewController as? PeopleViewController {
if let cell = viewController.peopleCollectionView.cellForItem(at: IndexPath(row: index, section: 0)) {
UIView.animate(withDuration: 0.1) {
cell.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
}
}
}
}
override func didUnhighlightItem(at index: Int) {
if let viewController = self.viewController as? PeopleViewController {
if let cell = viewController.peopleCollectionView.cellForItem(at: IndexPath(row: 0, section: index)) {
UIView.animate(withDuration: 0.1) {
cell.transform = CGAffineTransform.identity
}
}
}
}
}
Заранее спасибо!
0 ответов
Я думаю, что вам нужно получить доступ к ячейке из collectionContext
:
override func didHighlightItem(at index: Int) {
guard let cell = collectionContext?.cellForItem(at: index) else { return }
// Animation stuff
}