Во-первых, вы должны установить нулевой размер ячейки collectionView на раскадровке.
Во-вторых, использовать collectionView's sizeForItemAt
fun c:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if self.cellIndex == 0{
return CGSize(width: 300, height: 400)
} else if self.cellIndex == 1{
return CGSize(width: 300, height: 100)
}
}
Кроме того, зарегистрируйте свои ячейки на viewDidLoad
:
yourCollectionView.delegate = self
yourCollectionView.dataSource = self
yourCollectionView.register(UINib(nibName: "CardCell", bundle: nil), forCellWithReuseIdentifier: "CardCell")
yourCollectionView.register(UINib(nibName: "ListCell", bundle: nil), forCellWithReuseIdentifier: "ListCell")
yourCollectionView.reloadData()
Надеюсь, это поможет ...