расширение UICollectionViewCell на кране - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть UICollectionView, который прокручивается по вертикали, и я хочу изменить высоту элемента при нажатии.В состоянии по умолчанию ячейка имеет высоту экрана 2/3.Я попробовал следующее:

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell = collectionView.cellForItem(at: indexPath)
            if let cell = cell as? TutorialCell {
                let attribute = layout.layoutAttributesForItem(at: indexPath)
                attribute?.frame = CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.size.width,
                                               height: UIScreen.main.bounds.size.height)
                collectionView.reloadItems(at: [indexPath])

            }
        print(indexPath.row)
    }

Но это не работает.

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете достичь этого методом UICollectionViewDelegateFlowLayout sizeForItemAt

Объявить переменную

var selectIndex: Int = -1

В вашем didSelectItemAt добавить это

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    self.selectIndex = indexPath.row

    collectionView.reloadData()
}

Добавить расширение для UICollectionViewDelegateFlowLayout

extension YourViewController: UICollectionViewDelegateFlowLayout {

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        let height = (self.selectIndex == indexPath.row ) ?
            UIScreen.main.bounds.size.height :
            (UIScreen.main.bounds.size.height * 2) / 3

        return CGSize(width:UIScreen.main.bounds.size.width, height:height)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...