Поля вокруг ячейки, как в Android GridLayout - PullRequest
0 голосов
/ 12 апреля 2019

В Android легко создать список сетки со следующими полями:

enter image description here

Я нашел это решение для iOS, но оно не добавляет поля между ячейкой и родительским представлением, только между ячейками

let itemSpacing: CGFloat = 3
let itemsInOneLine: CGFloat = 2
flow.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
let width = UIScreen.main.bounds.size.width - itemSpacing * CGFloat(itemsInOneLine - 1) //collectionView.frame.width is the same as  UIScreen.main.bounds.size.width here.
flow.itemSize = CGSize(width: floor(width/itemsInOneLine), height: width/itemsInOneLine)
flow.minimumInteritemSpacing = 3
flow.minimumLineSpacing = 3

enter image description here

Как я могу решить это?

P.S. Я не хочу ничего кодировать жестко, поэтому все должно работать нормально для всех устройств iPhone / iPad

Ответы [ 2 ]

1 голос
/ 13 апреля 2019
let itemSpacing: CGFloat = 3
let itemsInOneLine: CGFloat = 2
let flow = UICollectionView().collectionViewLayout as! UICollectionViewFlowLayout
flow.sectionInset = UIEdgeInsets(top: itemSpacing, left: itemSpacing, bottom: itemSpacing, right: itemSpacing)
flow.minimumInteritemSpacing = itemSpacing
flow.minimumLineSpacing = itemSpacing
let cellWidth = (UIScreen.main.bounds.width - (itemSpacing * 2) - ((itemsInOneLine - 1) * itemSpacing)) / itemsInOneLine
flow.itemSize = CGSize(width: cellWidth, height: cellWidth)
1 голос
/ 13 апреля 2019

Добавьте лидирующие, конечные и верхние ограничения с константой 5 в представление вашей коллекции. Это решит проблему с маржой

...