Проблема с расстоянием между ячеек UICollectionView

swift

#1

Всем привет!
Делаю кастомный календарь, без сторонних библиотек. Построен на UICollectionView.
Даты лежат в ячейках. Настройки лейатуа UICollectionView -

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: (collectionView.frame.width / 7), height: collectionView.frame.width / 7)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0.0
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 0.0
}

На разных диагоналях, кроме iPhone X, заметил пространство между ячеек. На разных диагоналях пространство появляется совершенно в разных местах.

Вот, примеру, iPhone 11 -

Как можно решить эту проблему?


#2


#3

Это то, что надо! Спасибо большое :slight_smile:
В итоге, что получилось:
1.Из сториборда я убрал trailing и leading констреинты, относящиеся к CalendarView.
2. Установил center horizontally на CalendarView и установил констреинт ширины.
3. В ViewController прокинул оутлет констреинта ширины CalendarView
4. viewDidLoad -

let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
let width = self.view.frame.width
let cellSize = CGFloat(width / 7).rounded()
let newWidth = cellSize * 7
layout.itemSize = CGSize(width: cellSize, height: cellSize)
calendarWidth.constant = newWidth
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
collectionView.collectionViewLayout = layout

И все стало замечательно работать :slight_smile: