Как установить размер прототипа UICollectionViewCell

У меня есть UICollectionView в IB с кучей разных ячеек-прототипов.

Я попытался присвоить каждой ячейке собственный размер в IB, чтобы при создании ее экземпляра с помощью dequeueReusable... она имела этот размер. Однако я обнаружил, что неважно, какие у вас настройки в IB для вашей ячейки, ваше представление коллекции использует свой собственный размер ячейки для всех ячеек, используемых внутри нее.

Это ошибка? Если нет, то как лучше всего установить нестандартный размер для всех ваших ячеек?

Я также пробовал:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    NSString* cellIdentifier = self.cellIdentifier;
    ImageCell* cell =  [collectionView dequeueReusableCellWithReuseIdentifier:self.cellIdentifier forIndexPath:indexPath];

    return [cell sizeOfCell];
}

Но по какой-то причине приложение вылетает при удалении ячеек из очереди в этой функции.

Я создал подклассы всех ячеек-прототипов и имею функцию, которая возвращает их собственный размер. Есть ли другой способ создать экземпляр ячейки с идентификатором, который вы дали ей в IB?


person Josh Elias    schedule 03.05.2013    source источник


Ответы (1)


Размер ячеек (для представлений коллекций и представлений таблиц) в IB предназначен только для целей макета, он не влияет на размер во время выполнения. Вы должны реализовать метод UICollectionViewDelegateFlowLayout collectionView:layout:sizeForItemAtIndexPath: для возврата правильного размера для каждого элемента.

person rdelmar    schedule 03.05.2013