Я вычисляю UICollectionView
Ячейка itemSize, так что, если счетчик пройден, он вычисляет размер соответственно.
Я рассмотрел sectionInset.left
и sectionInset.right
, а также minimumInteritemSpacing
При тестировании в iPhone XR я получаю finalW
как 124.66666666666667.Это когда numberOfItems
передается как 3, левая и правая вставки равны 10 каждая, а минимальный interitemSpacing равен 10.
Проблема здесь в том, что он показывает 2 элемента вместо 3.
Дальнейшая отладкаесли у меня есть объект CGSize (124.666,124.66), он показывает 3 элемента
Но если я оставлю его без изменений, он покажет только 2 элемента.т.е. (124.66666666666667,124.66666666666667)
Не уверен, что расчет неверен или что я делаю неправильно.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return calculateItemSize(numberofItems: 3)
}
func calculateItemSize(numberofItems:Int) -> CGSize{
//Max Width
let maxW = self.collectionList.frame.width
let flowLayoutObject = self.collectionList.collectionViewLayout as! UICollectionViewFlowLayout
//Left and right inset
let leftInset = flowLayoutObject.sectionInset.left
let rightInset = flowLayoutObject.sectionInset.right
//UsableW
let usableW = maxW - leftInset - rightInset
let usableWWithSpacing = usableW - CGFloat(numberofItems-1)*flowLayoutObject.minimumInteritemSpacing
let finalW = (usableWWithSpacing) / CGFloat(numberofItems)
return CGSize(width: finalW, height: finalW)
}