Ich habe eine UICollectionViewController
und möchte einen benutzerdefinierten Header hinzufügen.Swift: Header von UICollectionViewController überlappt Zellen
Ich überprüft Section Header
im Interface Builder in meinem CollectionViewController und implementiert in meiner Unterklasse davon die viewForSupplementaryElementOfKind
Funktion.
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")
}
}
Die Änderungen werden wirksam, aber der Header (die rosa Fläche in der Abbildung unten) überlappt nun die regulären Zellen in der Collection.
Was mache ich falsch? Schätzen Sie jede Hilfe!
Danke, Magoo! Die Verwendung von FlowLayout führte mich in die richtige Richtung, 'headerReferenceSize' macht genau das, was ich erreichen wollte. 'let flowLayout = self.collectionView? .collectionViewLayout als? UICollectionViewFlowLayout' – ixany
Perfekt, froh, dass Sie es sortiert – Magoo