Możesz łatwo utworzyć statyczny kontroler UICollectionViewController.
Wystarczy utworzyć każdą komórkę w interfejsie konstruktora, dać im używać ponownie identyfikatory (np „Home_1” „Home_2” „Home_3”) i wypełnić metody następująco:
class HomeViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
let cellIdentifiers:[String] = ["Home_1","Home_2","Home_3"]
let sizes:[CGSize] = [CGSize(width:320, height:260),CGSize(width:320, height:160),CGSize(width:320, height:100)]
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return cellIdentifiers.count
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
return collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifiers[indexPath.item], for: indexPath)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return sizes[indexPath.item]
}
}
Następnie ustaw kontroler widoku być odpowiedniej klasy i, hej presto, (w zasadzie) statycznej kolekcji. Przykro mi to mówić, ale to jest NAJDROBNIEJ najlepszy sposób obsługi widoków pionowych i poziomych, gdy masz grupy kontrolek ...
Gdy budujesz swoje komórki w 'cellForItemAtIndexPath' możesz uzyskać dostęp do statycznej tablicy komórek niż użycie 'dequeueReusableCellWithReuseIdentifier'. Zrobiłbym to tylko, jeśli masz do tego naprawdę dobry przypadek użycia, ponieważ jest bardziej prawdopodobne, że doprowadzi to do błędów i problemów z wydajnością. –