Как получить высоту содержимого CollectionViewCell в зависимости от размера содержимого? - PullRequest
0 голосов
/ 05 июля 2018

У меня мало CollectionViewCell в моих CollectionView. Мне нужно настроить выбранную высоту CollectionViewCell после нажатия на кнопку. Пожалуйста, помогите.

   - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
        if (indexPath.section == 2) 
        {

            CGFloat h = self.collectionView.contentSize.height;


            if (isExpandedAboutUs && indexPath.row == 0)
            {
                return CGSizeMake(ScreenW, h); 
            }

            return CGSizeMake(ScreenW, 100);
        }
    }

self.collectionView.contentSize.height вернет CollectionView высоту. Что мне нужно, это размер выбранного ячейки.

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете попробовать следующий код для выбора ячейки:

 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let cell = collectionView.cellForItem(at: indexPath)
    let contentSize = cell?.contentView.bounds.size
    print(contentSize)
}

если вы хотите получить размер из другого метода, то вам может понадобиться найти путь индекса выбранной ячейки и передать путь индекса соответственно. как:

func yourMethod() {
    let selectedIndexPath = IndexPath(item: 0, section: 0)  //get your indexpath here
    let cell = collectionView?.cellForItem(at: selectedIndexPath)
    let contentSize = cell?.contentView.bounds.size
    print(contentSize)
}

Согласно инструкциям печати, значения, которые вы получаете для contentSize, имеют тот же размер, что и размер, который вы возвращаете в методе sizeForItemAtIndexPath.

...