Я знаю, что документированный совет - использовать UICollectionViewFlowLayout, если вы что-то делаете "как сетка или макет разбивки на основе строк". Однако я не уверен, что это верно для моего случая.
Я хочу сетку, но не хочу разбить раскладку. Элементы должны располагаться бесконечно горизонтально и вертикально, без штабелирования. По сути, гигантская шахматная доска, которая прокручивается горизонтально или вертикально, если содержимое выходит за рамки рамки.
В подкласс UICollectionViewFlowLayout мне нужно:
- Переопределить
prepareLayout
, чтобы остановить компоновку от упаковки элементов. Это похоже на большую работу. - Переопределить
collectionViewContentSize
.
Apple говорит, что они сделали "много тяжелой работы" в создании UICollectionViewFlowLayout, поэтому я должен использовать ее, если смогу. Но если мне нужно переопределить prepareLayout
, чтобы отключить разрыв строки, я подозреваю, что я отбрасываю большую часть своей работы. Из их оставшейся работы я, вероятно, не буду использовать большую часть ее (например, minimumLineSpacingForSectionAtIndex
).
Поскольку макет, который я хочу, настолько прост, я подозреваю, что я должен подклассифицировать UICollectionViewLayout, потому что:
- У меня будет более простая и чистая реализация со всеми в одном классе макета вместо распространения между подклассом и делегатом.
- Я не думаю, что это будет намного сложнее, чем подклассификация UICollectionViewFlowLayout, потому что я должен переопределить
prepareLayout
в обоих случаях, и я подозреваю, что именно там будет тяжелая работа. - Я буду лучше настраивать другие UICollectionViewLayoutAttributes обычным образом, чем пытаться добавить еще один kludge поверх подкласса UICollectionViewFlowLayout.
Верно ли мое заключение?