È possibile creare facilmente un UICollectionViewController statico.
Basta creare ogni cellula del costruttore di interfaccia, dare loro riutilizzo identificatori (ad esempio "Home_1" "Home_2" "Home_3"), e popolare i metodi come segue:
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]
}
}
quindi impostare il controller della vista essere della classe appropriata, e, presto, una raccolta (fondamentalmente) statica. Mi spiace dirlo ma questo è DI FAR il modo migliore per supportare le visualizzazioni verticale e orizzontale quando si hanno gruppi di controlli ...
fonte
2016-09-14 21:31:11
Quando si costruiscono le celle in 'cellForItemAtIndexPath', è possibile accedere a una matrice statica di celle piuttosto di usare 'dequeueReusableCellWithReuseIdentifier'. Lo farei solo se hai un caso di utilizzo molto forte, poiché è più probabile che porti a bug e problemi di prestazioni. –