Вложение Multiple CollectionView - PullRequest
0 голосов
/ 21 мая 2019

Я строю макет, представленный следующим образом.

enter image description here

Иерархия выглядит следующим образом:

view
|
|__CollectionView (CV1), vertical scroll
         |__ CV1.SimpleCell1
         |__ CV1.SimpleCell ...
         |__ CV1.SimpleCell 9
         |
         |__CV1.Complex
                |
                |__ScrollView, horizontal scroll
                        |
                        |__CollectionView2 (CV2), horizontal scroll
                        |           |
                        |           |__n Titles
                        |
                        |__CollectionView3 (CV3), vertical scroll only
                                    |
                                    |__n images

Существует представление основного собрания с вертикальной прокруткой, заголовок которого является изображением, и имеет несколько простых ячеек с обычными визуальными элементами. Приблизительно после 9 ячеек мне нужна часть в представлении, где пользователю предоставляется другая прокручиваемая часть, которая может разбивать на страницы или иметь горизонтальную прокрутку произвольной формы, которая имеет заголовок и коллекционное представление (состоящее из изображений), назначенное этому заголовку. Теперь пользователь должен иметь возможность прокручивать назад и вперед и по-прежнему прокручивать вертикально, чтобы получить доступ к большему количеству изображений. Ниже приведено представление того же. Я действительно не в состоянии выяснить правильную возможную реализацию представления здесь. Кроме того, если я встраиваю динамическое представление коллекции в родительскую ячейку представления коллекции, я не уверен, как высота будет динамической.

enter image description here

Вся схема архитектуры:

enter image description here

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

Спасибо. Пожалуйста, дайте мне знать для получения дополнительной информации, если требуется.

1 Ответ

1 голос
/ 21 мая 2019

Согласно тому, что вы сказали, я бы сделал что-то подобное; может быть не точным, но это основная идея.

view
|
|__CollectionView Vertical Scrolling or TableView
         |
         |__CV1.Simple Cell
         |__ …
         |__CV1.Simple Cell
         |
         |__CV1.Complex Cell
                |__CollectionView - Titles - Horizontal scroll (no interaction)
                |         |
                |         |__n Title Header Cell
                |
                |__CollectionView - Images - Horizontal scroll
                          |
                          |__n Image Cell

Таким образом, внешний вид коллекции - это простой вид коллекции, который имеет вертикальную прокрутку и содержит n ячеек;

  • Complex Cell - это в основном ячейка, которая содержит горизонтальные элементы; не нужно использовать UIScrollView, так как мы будем использовать два горизонтальных UICollectionView, один содержит заголовки («Один», «Второй» ...), а другой содержит изображения; установить горизонтальную прокрутку можно в раскадровке / xib или делая collectionView.collectionViewLayout as? UICollectionViewFlowLayout)?.scrollDirection = .horizontal
  • Complex Cell - это dataSource и delegate обоих представлений коллекции;
  • Title Collection View должен иметь isUserInteractionEnabled = false (пользователи не могут прокручивать заголовки пальцем);
  • Цель - прокрутить Title Collection View на основе Image Collection View; Вы можете использовать scrollViewDidScroll, который является методом UICollectionViewDelegate (помните, что UICollectionViewDelegate расширяет UIScrollViewDelegate)

Другие вопросы для рассмотрения:

  • Complex Cell должен иметь фиксированный размер (в этом случае может быть очень сложный динамический размер ручки)
  • Вы можете упростить использование UITableView вместо UICollectionView для вертикальной прокрутки, но это не позволит вам иметь сетку для Simple Cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...