UICollectionviewCell 总是放置在视图的边缘
Posted
技术标签:
【中文标题】UICollectionviewCell 总是放置在视图的边缘【英文标题】:UICollectionviewCell always placing at the edge of the view 【发布时间】:2017-05-31 19:48:17 【问题描述】:我的UICollectionViewCell
s 总是放在UICollectionView
的边缘。总是有这样的中间空间。
这是什么原因?而且我想始终每行保留 3 个项目。但是这样它只是设置了2。如何解决这个问题? 请帮我。 谢谢
更新
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical //.horizontal
layout.itemSize = cellSize
layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
layout.minimumLineSpacing = 1.0
layout.minimumInteritemSpacing = 1.0
layout.minimumLineSpacing=1.0
btncollectionView.setCollectionViewLayout(layout, animated: true)
btncollectionView.reloadData()
【问题讨论】:
看不详细,似乎您的UICollectionView
宽度无法承受使用此UICollectionViewCells
宽度的3 列。您是否为此设置了正确的宽度和约束?
我添加了一个带有前导和尾随 50 的子视图,并且我的 collectionview 所有 4 个边都设置为 0 约束,我的单元格大小为 (self,view,size.width-100)/3
【参考方案1】:
适用于水平和垂直滚动方向以及可变间距
声明每行所需的单元格数
let numberOfCellsPerRow: CGFloat = 3
配置flowLayout
渲染指定的numberOfCellsPerRow
if let flowLayout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout
let horizontalSpacing = flowLayout.scrollDirection == .vertical ? flowLayout.minimumInteritemSpacing : flowLayout.minimumLineSpacing
let cellWidth = (view.frame.width - max(0, numberOfCellsPerRow - 1)*horizontalSpacing)/numberOfCellsPerRow
flowLayout.itemSize = CGSize(width: cellWidth, height: cellWidth)
【讨论】:
你能看到我的更新吗,我已经设置了这些但还是一样cellSize
的值是多少?
width =height=104.666
它不应该是一个常数值,你需要像我上面那样计算
我说的是当前值。我正在计算它 (self.view.size.width-100)/3以上是关于UICollectionviewCell 总是放置在视图的边缘的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 UICollectionViewCell 内的 UILabel 的值?
以没有中间间距的方式设置 UICollectionViewCell 的大小
awakeFromNib() 在滚动开始时在 UICollectionViewCell 子类中调用了两次