我有一个UICollectionView,其单元格覆盖整个屏幕。我的问题在于,右侧有一个小空间,显示不同的单元格。我希望每个单元格覆盖整个屏幕宽度。
以下是我尝试的内容:
private func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { return CGSize(width: view.frame.width, height: view.frame.height) }
我还有什么办法可以解决这个问题吗?
答案 0 :(得分:6)
正确的Swift 3实现应该是
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let itemWidth = collectionView.bounds.width
let itemHeight = collectionView.bounds.height
return CGSize(width: itemWidth, height: itemHeight)
}
这将使每个集合视图单元格填满整个集合视图。它不应该是私人的。现在您需要做的就是确保您的集合视图在整个视图中延伸。
另外,请确保扩展ViewController以包含UICollectionViewDelegateFlowLayout以使上述方法起作用,并在Storyboard中将所有部分插入更改为0。
答案 1 :(得分:1)
UICollectionViewDelegate、UICollectionViewDataSource、UICollectionViewDelegateFlowLayout
添加所有 3 个代表很重要。特别是UIDelegateFlowLayout。
答案 2 :(得分:0)
只是为了改进投票最高的答案:您需要添加 UICollectionViewDelegateFlowLayout
一致性,但如果您使用 UICollectionViewController
这不是必需的 - 它已经符合所有必要的协议。< /p>
此外,实现 sizeForItemAt
的更短方法:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return collectionView.bounds.size
}