CollectionView部分标题不显示

时间:2017-06-30 20:49:31

标签: ios swift uicollectionview uicollectionviewlayout

当我最初将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)

1 个答案:

答案 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)来注册标题