CollectionView 高度问题
Posted
技术标签:
【中文标题】CollectionView 高度问题【英文标题】:CollectionView Height Issue 【发布时间】:2018-03-23 10:03:59 【问题描述】:如何增加单元格高度。此外,我正在增加情节提要的单元格高度,但它不起作用。 注意:(只有我想增加什么是新单元格高度)
代码:-
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
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)
return CGSize(width: (self.view.frame.width - 8) / 3.0 , height: (self.view.frame.width - 8) / 3.0)
【问题讨论】:
确保你使用了UICollectionViewDelegateFlowLayout
这个和类名。
Try this
这是一个集合视图,还是三个集合视图?
@MilanNosáľ 在这个页面中这些有三个 collectionViews
【参考方案1】:
sizeForItemAt
会为您集合中的每个项目调用。这段代码:
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)
看起来它属于viewDidLoad
,或者其他地方只会被调用一次。此外,如果我没记错的话,设置 flowLayout.itemSize
在所有项目的大小相同时使用 - 因此它不能与 sizeForItemAt
实现结合使用(换句话说,我会完全删除它。
这是最终应用的内容:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: (self.view.frame.width - 8) / 3.0 , height: (self.view.frame.width - 8) / 3.0)
所以要更改给定collectionView
中单元格的高度,只需更改返回的CGSize
中的高度,例如,更改为collectionView.frame.height
以适应collectionView
的高度:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: (self.view.frame.width - 8) / 3.0 , height: collectionView.frame.height)
【讨论】:
以上是关于CollectionView 高度问题的主要内容,如果未能解决你的问题,请参考以下文章
TableView 和 CollectionView:调整 tableView 和 collectionView 的高度
TableView 单元格高度不根据第一次重新加载时的 collectionview 高度
使 CollectionView 和 TableView 高度动态化
iOS:在 Swift3 中,在 UICollectionViewLayout 部分,我如何访问主要的 CollectionView 属性?