7

У меня есть макет, который имеет два столбца бок о бок. Есть ли простой способ сделать это, используя один UICollectionView? Единственное требование является то, что решение должно работать для прошивки 8 и клетки должны укладывать вертикально в каждом столбце, например так:Два столбца UICollectionView с заголовком

----------------- 
    |  A  | 
    |  B  | 
    ----------------- 
    | C | E | 
    | C | F | 
    | D |  | 
    | E |  | 
    ----------------- 

Собранный Cs показывает, что клетки в левых и правых колонках могут быть разной высотой, так недостаточно просто нарисовать их слева, справа, слева, справа.

+0

не могли бы вы сделать CollectionView с 2-мя колоннами, а затем сделать первый сотовый занимают все пространство, используя метод делегата: 'CollectionView: макет: sizeForItemAtIndexPath:' и сделать вторую ячейку (рядом с первым) с шириной 0? –

+0

Я мог бы это сделать, но разве это не могло бы сделать большие вертикальные промежутки между ячейками в одном столбце, если, скажем, C и E, где разные высоты? (Я только что обновил макет выше, чтобы отразить это). – Brandon

+0

Я использую эту библиотеку для своего макета, если я правильно понимаю ваш вопрос: https://github.com/chiahsien/CHTCollectionViewWaterfallLayout –

ответ

2

Это действительно довольно просто, используя UICollectionView с раскладкой. Поскольку каждая ячейка может иметь динамическую высоту, единственное, что вам нужно, это то, что каждая ячейка имеет ширину 160 (или половину ширины просмотра коллекции). Затем выполните collectionView:layout:sizeForItemAtIndexPath: так, чтобы каждый элемент мог вернуть соответствующую высоту.

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

enter image description here

Смежные вопросы