UICollectionView 单元格与 Header 重叠

Posted

技术标签:

【中文标题】UICollectionView 单元格与 Header 重叠【英文标题】:UICollectionView cell overlapping with Header 【发布时间】:2018-03-19 09:20:05 【问题描述】:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    let collectionViewWidth = collectionView.bounds.width


        let keys = Array(indoordataDictionary.keys)
        let keyString:String = keys[indexPath.section]
        let objFacilityUserList:FacilityUserList = indoordataDictionary[keyString]! as! FacilityUserList

        if objFacilityUserList.facilityUserList.count == 1 
            return CGSize(width: collectionViewWidth, height: 30)
        
    return CGSize(width: collectionViewWidth/2, height: 70)



func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat 
    return 0

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat 
    return 5


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize 

    if indoorSegment.selectedSegmentIndex == 1 
        return CGSize(width:collectionView.frame.size.width, height:0.0)
    
    else 
        return CGSize(width:collectionView.frame.size.width, height:40.0)
    



func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView 

    let headerView: PlaceCollectionReusableView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: TagIDConstant.nibs.kPlaceCollectionReusableViewID, for: indexPath) as! PlaceCollectionReusableView
    let keys = Array(indoordataDictionary.keys)
    let keyString:String = keys[indexPath.section]
    headerView.placeNameLabel.text = keyString

    return headerView

【问题讨论】:

放重叠标题的屏幕截图 检查节标题的高度。检查它是否不返回 0,在这种情况下,它看起来像单元格重叠的标题。 尝试覆盖referenceSizeForHeaderInSection方法并返回你想要的高度 【参考方案1】:

如果您使用 CollectionView 的自定义布局,那么以下链接是最好的类,它将解决此部分标题重叠问题。

https://gist.github.com/olxios/9e0ae85d49529b0d8b8a6fe6e7a00fab

希望它对那些使用 CollectionView 的自定义布局的人有所帮助。

【讨论】:

以上是关于UICollectionView 单元格与 Header 重叠的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 初始化后不滚动

当集合视图大小发生变化时,我需要帮助为 UICollectionView 单元格大小设置动画

集合视图更改单元格大小

为啥标题单元格与正文单元格不对齐?

UICollectionviewCell:计算完美单元格大小

将大写单元格与小写单元格分开排序