如何在中心布局集合单元?
Posted
技术标签:
【中文标题】如何在中心布局集合单元?【英文标题】:How to layout collection cell in center? 【发布时间】:2018-08-08 10:44:12 【问题描述】:我正在尝试将收集单元格设置在屏幕中心,但没有得到我想要的结果。
1.我想要的结果
2。当前输出
我尝试了下面的代码,但没有工作。
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 |
4 个项目应该是这样的
|x x x|
| x |
【问题讨论】:
只需将适当的内容或部分插入设置为UICollectionView
@SPatel 请查看我更新的问题。谢谢!
为什么你在 UICollectionView 中使用这个小数字? UIView ??
【参考方案1】:
试试下面的代码:
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)
【讨论】:
是的,亲爱的,我试过了。但无法根据我的需要工作,请检查我更新的问题以获得更清晰的信息。以上是关于如何在中心布局集合单元?的主要内容,如果未能解决你的问题,请参考以下文章