Спасибо @Caleb за то, что вдохновили меня. Я попробовал следующую настройку
class ViewController: UIViewController {
let items = ["A", "B", "C", "D", "E"]
// other unnecessary stuff for this demonstration
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if section == 0 {
return ((items.count + 1) / 2) // just ceiling, after dividing by 2
} else if section == 1 {
return items.count - ((items.count + 1) / 2) // calculating the remainder item
} else {
return 0
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
var text = "";
if indexPath.section == 0 {
// take the even part
text = items[indexPath.row * 2]
} else {
// take the odd part
text = items[(indexPath.row * 2) + 1]
}
(cell.subviews[0].subviews[0] as? UILabel)?.text = text
return cell
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 2
}
}
Я установил направление прокрутки на vertical
, и результат выглядит следующим образом. Это будет работать как для нечетного номера элемента, так и для четного номера элемента.
Очевидно, что это не ОП ищет. Здесь я использовал два разных раздела, но OP хочет сделать зигзагообразный шаблон внутри раздела. Это, конечно, невозможно, так как @Caleb разбирается, без заливки по ширине мы не сможем спуститься в вертикальном направлении.