подкласс UICollectionViewFlowLayout

Я создаю свой собственный поток, но у меня проблемы с получением правильного collectionViewContentSize, мои данные представляют собой массив массивов, 5 массивов, каждый массив имеет несколько элементов.

Это правильно numberOfItemsInSection:0 ? или мне нужно проверить все массивы, чтобы найти массив с большим количеством элементов, а затем вычислить xSize с элементами в этом разделе?

-(CGSize)collectionViewContentSize {

NSInteger xSize = [self.collectionView numberOfItemsInSection:0] * (itemWidth + space); // "space" is for spacing between cells.
NSInteger ySize = [self.collectionView numberOfSections] * (itemHeight + space);

NSLog(@"size %f, %f", xSize, ySize);
return CGSizeMake(xSize, ySize);

}

Спасибо.


person HernandoZ    schedule 20.08.2013    source источник


Ответы (2)


У вас установлены обе оси. Как правило, вам нужно установить только одну ось (ось прокрутки), потому что для вас будет установлен край экрана (или край вашего collectionView) в направлении без прокрутки. Кроме того, да, вам придется пройтись по каждому массиву, чтобы получить общую высоту.

person Nick Terry    schedule 20.08.2013
comment
Спасибо, у меня есть то же самое для - (UICollectionViewLayoutAttributes )layoutAttributesForItemAtIndexPath:(NSIndexPath *)path и -(NSArray)layoutAttributesForElementsInRect:(CGRect)rect . пройтись по каждому разделу... - person HernandoZ; 21.08.2013
comment
Обычно они используются для изменения определенных частей (одной ячейки или всех ячеек в прямоугольнике), а не всей коллекции. Документы Apple хорошо объясняют, как это сделать. См. Понимание основного процесса компоновки developer.apple.com/library/ios/documentation/WindowsViews/ - person Nick Terry; 22.08.2013

Для всех, кто хочет узнать, как это сделать, я нашел этот замечательный учебник от Брайана Хенсена.

person HernandoZ    schedule 21.08.2013