Сделайте горизонтальную ячейку CollectionView Cell больше других - PullRequest
0 голосов
/ 16 октября 2018

У меня есть collectionView, и я хочу, чтобы центральная ячейка была больше, чем другие ячейки, а при переходе к предыдущей или следующей ячейке увеличить ее в центре

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    if collectionView == self.collectionView {
        return slidData.count
    } else {
        return categoryData.count
    }
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if collectionView == self.collectionView {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath) as! SliderImgCell

        cell.categoryName.text = slidData[indexPath.row].imageTitle
        cell.detail.text = slidData[indexPath.row].imageContent
        cell.pics = slidData[indexPath.item]

        return cell
    } else{
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "categoryCell", for: indexPath) as! CategoryCell

        cell.categoryName.text = categoryData[indexPath.row].depName
        cell.pics = categoryData[indexPath.item]

        return cell
    }
}

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Вам нужно сохранить выбранный indexPath следующим образом:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    selectedIndexPath = indexPath 
}

В представлении вашей коллекции должен быть подтвержден UICollectionViewDelegateFlowLayout.Затем в методе sizeForItemAt измените размер ячейки:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    if indexPath == selectedIndexPath {
        return CGSize(width: 200, height: 90)
    } else {
        return CGSize(width: 180, height: 80)
    }
}
0 голосов
/ 16 октября 2018

По сути, вам нужна анимация карусели.

Просмотрите эту библиотеку и либо используйте ее полностью, либо воспользуйтесь помощью кода.

...