我试着在屏幕中央设置采集单元,但没有得到我想要的结果。
一。我想要的结果
ios - 如何在中心布置采集单元?-LMLPHP
2。电流输出
ios - 如何在中心布置采集单元?-LMLPHP
我试过下面的代码,但没有成功。

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    let totalCellWidth = 80 * 3
    let totalSpacingWidth = 10 * (3 - 1)

    let leftInset = (collectionView.frame.size.width - CGFloat(totalCellWidth + totalSpacingWidth)) / 2
    let rightInset = leftInset

    return UIEdgeInsetsMake(0, leftInset, 0, rightInset)
}

更新了以下内容,以便更好地理解。
6件应该是这样的
|x x x|
|x x x|

5件应该是这样的
|x x x|
| x x |

四件物品应该是这样的
|x x x|
|  x  |

最佳答案

请尝试以下代码:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    let cellWidth : CGFloat = 80 * 3

    let numberOfCells = floor(self.view.frame.size.width / cellWidth)
    let edgeInsets = (self.view.frame.size.width - (numberOfCells * cellWidth)) / (numberOfCells + 1)

    return UIEdgeInsetsMake(15, edgeInsets, 0, edgeInsets)
}

09-07 03:00