我试图将水平集合视图的第一个和最后一个单元格居中.
我发现的唯一方法是在我的UICollectionView的开头和结尾添加额外的单元格.出于显而易见的原因,这种方法完全不是一个坏主意,但我现在还没有找到更好的方法.而且,由于iPhone 6和iPhone 6,我的视图布局完全被破坏了……(facepalm)
为了说明我的需要,我需要显示如下内容:
| x x x x x| where the first x represent my first cell
and
|x x x x x | where the last x represent my last cell
我认为使用UICollectionViewFlowLayout子类是使用contentInset的东西的正确方法,但我是这些组件的新手.有关如何实现此目的的任何链接或建议?
最佳答案 发布在这里供将来参考,因为我一直在处理同样的问题,并找到了解决方案.
使用Swift 3在Xcode版本8.2.1(8C1002)中测试
UICollectionViewDelegate具有func collectionView(_ collectionView:UICollectionView,layout collectionViewLayout:UICollectionViewLayout,insetForSectionAt section:Int) – > UIEdgeInsets
要使集合视图中的第一个和最后一个单元格居中,您可以通过以下方式计算插入:
let inset: CGFloat = collectionView.frame.width * 0.5 - cellSize.width * 0.5
在此之后,您只需返回新的UIEdgeInsetMake(0,inset,0,inset)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
let inset: CGFloat = collectionView.frame.width * 0.5 - cellSize.width * 0.5
return UIEdgeInsetsMake(0, inset, 0, inset)
}
– – – -编辑 – – – –
在这种情况下,我将单元格大小存储为硬编码值,并使用委托func collectionView(_ collectionView:UICollectionView,layout collectionViewLayout:UICollectionViewLayout,sizeForItemAt indexPath:IndexPath) – >设置它. CGSize