Подтвердить что ты не робот

UICollectionView: как определить UICollectionViewLayout, который поддерживает горизонтальную и вертикальную прокрутку?

В настоящий момент я пытаюсь создать UICollectionView, который должен отображать простой excel-like-spreadsheet, с rows и columns. Это должно быть легкой задачей с UICollectionViews, я полагал. И я действительно хотел бы выполнить реализацию в UICollectionView, а не в любом grid framework.

Но на данный момент я немного висит. Я понял, что я, к сожалению, не могу использовать UICollectionViewDelegateFlowLayout, потому что это поддерживает только scrolling в или horizontally или vertically направлении. Но мне нужно scrolling в обоих направлениях.

Поэтому Я должен использовать UICollectionViewLayout, но для этого я не нашел хороших примеров, как его использовать. Кто-нибудь из вас пример, как подклассировать UICollectionViewLayout для поддержки rows и columns?

Спасибо заранее.

4b9b3361

Ответ 2

UICollectionViewFlowLayout определенно не может - "Макет сетки прокручивается вдоль одной оси только горизонтально или вертикально".

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

Что вы подразумеваете под страницей, вы хотите сделать подкачку, как scrollview? Мне интересно использовать UICollectionViewFlowLayout в UICollectionView для вертикальной прокрутки, внутри UIScrollView для горизонтальной прокрутки.

Ответ 3

Я добавил пример использования настраиваемого макета для реализации простой горизонтальной и вертикальной сетки прокрутки здесь https://github.com/neildavis/MyCollectionView

В моем примере используется PSTCollectionView, так как мне нужна поддержка iOS 5, но это API, совместимый со встроенным UICollectionView. (На самом деле он использует классы совместимости (PSUICollectionView и т.д.), Предоставляемые для обеспечения использования UICollectionView на iOS 6 и возвращается к использованию PSTCollectionView и т.д. На iOS 5.) Просто удалите префикс "PS" на них, чтобы вернуться к реализации iOS 6 только в UIKit,

Ответ 4

Ответ, который не требует анализа трех примеров проектов

В подклассе UICollectionViewLayout:

  • Внесите -(CGSize)[collectionViewContentSize] и верните размер, размер которого больше по высоте и ширине, чем размер UICollectionView. (Доступно через: self.collectionView.frame.size)
  • Рассчитать макет для UICollectionViewCell в пределах размера содержимого, а не размера кадра.

Примечание. Убедитесь, что прокрутка включена в UICollectionView. (По умолчанию он включен.)