1

我有一個UICollectionViewController和要添加自定義標題。斯威夫特:UICollectionViewController的頭重疊細胞

我在我的CollectionViewController中的Interface Builder中檢查了Section Header,並在我的子類viewForSupplementaryElementOfKind函數中實現。

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

    switch kind { 

    case UICollectionElementKindSectionHeader: 

     let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "myHeaderIdentifier", for: indexPath) 

     // !! NOT WORKING PROPERLY 
     // sectionHeader overlaps other cells 

     headerView.backgroundColor = UIColor(hue: 0.9, saturation: 1.0, brightness: 0.9, alpha: 1.0) 
     headerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 250.0) 

     return headerView 

    default: 
     assert(false, "Unexpected element kind") 
    } 

} 

更改生效,但標題(下面屏幕截圖中的粉色區域)現在與collectionView中的常規單元格重疊。

enter image description here

我在做什麼錯? 感謝任何幫助!

回答

2
public func layoutAttributesForSupplementaryElementOfKind(kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? 

在這裏,我相信你應該能夠設置幀/高度

還有headerReferenceSizeUICollectionViewFlowLayout,你可以創建collectionView時,如果它的將是靜態

+0

謝謝你,Magoo!使用FlowLayout讓我走向正確的方向,'headerReferenceSize'完全符合我想要達到的目標。 '讓flowLayout = self.collectionView?.collectionViewLayout as? UICollectionViewFlowLayout' – ixany

+0

完美,很高興你有它排序 – Magoo

1

使用此方法設置從UICollectionViewDelegateFlowLayout協議:

optional func collectionView(_ collectionView: UICollectionView, 
        layout collectionViewLayout: UICollectionViewLayout, 
     referenceSizeForHeaderInSection section: Int) -> CGSize { 
    return CGSize(width: UIScreen.main.bounds.width, height: 250.0) 
} 

務必將您的類作爲流佈局的代表。你可以找到更多的信息here

+0

這個函數返回一個CGSize對象不是一個整數 –

+0

哎呀。接得好。我會更新。 – Mark