Я использую UICollectionView программно.
Я установил его рамку следующим образом:
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 3000) collectionViewLayout:flowLayout];
У моего UICollectionViewFlowLayout
есть вставка раздела, установленная как:
flowLayout.sectionInset = UIEdgeInsetsMake(20.0, 20.0, 100.0, 20.0);
У меня тоже только 1 часть.
Я установил высоту 3000, чтобы увидеть, будет ли прокручиваться представление коллекции, но это не так. Я устанавливаю это так, поскольку представление коллекции не прокручивается вверх или вниз, когда я вставляю новые элементы.
UICollectionView
является подклассом UIScrollView
, что означает, что я могу продолжать сбрасывать размер содержимого прокрутки. Будет ли это работать должным образом?
Единственная проблема заключается в том, что это сработает, если я знаю размеры всех элементов, включая количество элементов в каждой строке.
Если бы каждый элемент имел разный размер, как бы я узнал размер каждой строки? Мне нужно, чтобы добавить все размеры строк и увеличить высоту размера содержимого self.collectionView
.
ИЗМЕНИТЬ
Даже мое предложение выше, сброс размера содержимого, не работает должным образом! Я пробовал следующее при обновлении представления моей коллекции:
int numberOfRows = self.dataArray.count / 3;
self.collectionView.contentSize = CGSizeMake(self.view.frame.size.width, (numberOfRows * 200) + 300);
Хотя это очень некрасиво. Это связано с тем, что предполагается, что все мои изображения имеют размер 200x200 пикселей, что соответствует 3 изображениям в строке (отсюда и деление на 3).
Кроме того, даже с +300, которые у меня есть, последнюю строку я вижу только на 3/4, а не на всю. Мне нужно прокрутить больше, и я смогу это увидеть, но он снова возвращается к 3/4. Это похоже на прокрутку для обновления, когда представление перемещается только в том случае, если вы его перетаскиваете, а когда вы оставляете его, оно возвращается туда, где оно было. Почему это происходит? Просто Apple так плохо спроектировала UICollectionView
? Это немного нелепо... UITableViews автоматически настраивают свою прокрутку в соответствии с их содержимым.