7

Mam układ, który ma dwie kolumny obok siebie. Czy istnieje prosty sposób, aby to zrobić za pomocą jednego UICollectionView? Jedyne wymagania to rozwiązanie musi pracować iOS 8 i komórki muszą stos pionowo w każdej kolumny, jak to:Dwie kolumny UICollectionView z nagłówkiem

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

Zgromadzona Cs pokazują, że komórki leżące w kolumnie lewej i prawej mogą mieć różne wysokości, tak nie wystarczy tylko pomalować je w lewo, prawo, lewo, prawo.

+0

nie można po prostu zrobić CollectionView z 2 kolumny, a następnie dokonać pierwsza komórka zajmują całą przestrzeń stosując metodę Delegat: 'CollectionView: Struktura: sizeForItemAtIndexPath:' i zrobić drugą komórkę (obok pierwszego) o szerokości 0? –

+0

Mogłem to zrobić, ale czy nie spowodowałoby to potencjalnie dużych pionowych odstępów między komórkami w tej samej kolumnie, jeśli, powiedzmy na przykład, C i E, gdzie różne wysokości? (Właśnie zaktualizowałem powyższy układ, aby to odzwierciedlić). – Brandon

+0

Używam tej biblioteki do mojego układu, jeśli dobrze rozumiem twoje pytanie: https://github.com/chiahsien/CHTCollectionViewWaterfallLayout –

Odpowiedz

2

Jest to całkiem proste dzięki użyciu układu UICollectionView. Ponieważ każda komórka może mieć dynamiczną wysokość, jedyną wymaganą rzeczą jest to, że każda komórka ma szerokość 160 (lub połowę szerokości widoku kolekcji). Następnie zaimplementuj collectionView:layout:sizeForItemAtIndexPath:, aby każdy element mógł zwrócić jego odpowiednią wysokość.

Ponieważ każda komórka ma jednak dynamiczną wysokość, może skończyć się jedną kolumną o wiele dłużej niż inną. Jeśli chcesz również mieć równe wysokości kolumn, będziesz chciał przetasować kolejność na liście tak, aby wysokość dla pierwszej połowy pozycji była równa wysokości drugiej połowy.

enter image description here

Powiązane problemy