Как анимировать UICollectionViewCell при выделении с помощью IGListKit - PullRequest
0 голосов
/ 30 апреля 2018

Мне не удалось использовать функции 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
                }
            }
        }
    }
}

Заранее спасибо!

1 Ответ

0 голосов
/ 12 марта 2019

Я думаю, что вам нужно получить доступ к ячейке с collectionContext:

override func didHighlightItem(at index: Int) {
    guard let cell = collectionContext?.cellForItem(at: index) else { return }        
    // Animation stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...