Я пытаюсь создать UICollectionView с повторяющимся макетом из 7 ячеек, который выглядит следующим образом:
Однако с CollectionViewLayout я могу Кажется, 6-я и 7-я ячейки не попадают в один и тот же столбец.
Вот соответствующий код:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let collectionViewWidth = self.collectionView.bounds.width
let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
let spaceBetweenCells = flowLayout.minimumInteritemSpacing
var adjustedWidth = collectionViewWidth - spaceBetweenCells
if indexPath.row % 7 == 0 {
return CGSize(width: collectionViewWidth, height: collectionViewWidth)
}
if indexPath.row % 7 == 1 || indexPath.row % 7 == 2 || indexPath.row % 7 == 3 {
adjustedWidth = collectionViewWidth - (spaceBetweenCells * 2)
return CGSize(width: floor(adjustedWidth / 3), height: floor(adjustedWidth / 3))
}
if indexPath.row % 7 == 4 {
adjustedWidth = collectionViewWidth - spaceBetweenCells * 2
return CGSize(width: floor(adjustedWidth / 3) * 2 + spaceBetweenCells, height: floor(adjustedWidth / 3) * 2 + spaceBetweenCells)
}
if indexPath.row % 7 == 5 || indexPath.row % 7 == 6 {
adjustedWidth = collectionViewWidth - spaceBetweenCells * 2
return CGSize(width: floor(adjustedWidth / 3), height: floor(adjustedWidth / 3))
}
let width: CGFloat = adjustedWidth / 2
let height: CGFloat = width;
return CGSize(width: width, height: height)
}
И вот результат:
Я даже пытался использовать меньшую высоту для последних двух ячеек, чтобы убедиться, что высота не является проблемой. Спасибо за любую помощь.
Обновление Я получил его на работу через UIStackViews, хотя и довольно раздражает.