当我最初将sectionHeader添加到我的collectionView时,它确实显示为正常。我在我的collectionViewController.swift中有这个,并且有一个标题类。
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "header", for: indexPath) as! HomeHeader
return header
}
将此添加到viewDidLoad()
后,标题将不再显示。
let cellsAcross: CGFloat = 2
let spaceBetweenCells: CGFloat = 5
let dimX = ((collectionView?.bounds.width)! - (cellsAcross - 1) * spaceBetweenCells) / cellsAcross
let dimY = CGFloat(dimX/187 * 125)
let cellSize = CGSize(width: dimX , height: dimY)
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.itemSize = cellSize
//layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
layout.minimumLineSpacing = 5.0
layout.minimumInteritemSpacing = 5.0
collectionView?.setCollectionViewLayout(layout, animated: true)
collectionView?.reloadData()
我有这个强迫它在所有屏幕尺寸上显示两行单元格。 (我仍然有一个问题,即没有调整单元格中的所有内容)。
我不确定为什么标题不再出现
(我正在使用Swift 3)
答案 0 :(得分:2)
您需要实现标题高度方法。
添加layout.headerReferenceSize = CGSize(100, 200)//size you want header in every section
如果您只想在特殊部分中使用一个标题,则可以实现
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout,referenceSizeForHeaderInSection section: Int) -> CGSize
而是这种方法
更重要的是,我看到你没有注册headerView。
我想你也可以调用这个方法register(_ viewClass: AnyClass?, forSupplementaryViewOfKind elementKind: String, withReuseIdentifier identifier: String)
来注册标题