Entsprechend der Dokumentation von Apple sollte minimumLineSpacing von der UICollectionFlowLayout-Klasse den Abstand zwischen zwei Zeilen innerhalb Ihrer UICollectionView bestimmen.Swift - minimumLineSpacing in UICollectionViewLayout zum Anpassen des Zeilenzwischenraums
Ich habe das UICollectionFlowLayout subclassiert und diese Klasse mit meiner UICollectionView verbunden. Unabhängig davon, welchen Wert ich für minimumLineSpacing gesetzt habe, habe ich keine Auswirkungen auf das Aussehen von CollectionView.
Wie lege ich den Zwischenraum zwischen Zeilen fest?
// My subclassed UICollectionViewFlowLayout
import UIKit
class CustomImageFlowLayout : UICollectionViewFlowLayout{
override init(){
super.init()
setupLayout()
}
required init?(coder aDecoder: NSCoder) {
super.init()
setupLayout()
}
func setupLayout(){
self.minimumInteritemSpacing = 1 // <-- this works just fine
self.minimumLineSpacing = 55 // <-- no matter what this value is nothing changes.
scrollDirection = .Vertical
}
override var itemSize: CGSize{
set{
}
get{
let numberOfColumns: CGFloat = 3
let itemWidth = (CGRectGetWidth(self.collectionView!.frame) - (numberOfColumns - 1))/numberOfColumns
return CGSizeMake(itemWidth, itemWidth)
}
}
}
Ich glaube nicht 'UICollectionViewFlowLayout' ist so ausgelegt zu sein, su bclassed. Ich kann mir einige Gründe vorstellen, warum die Art, wie Sie "itemSize" überschreiben, ein Problem verursachen könnte. Warum erstellst du nicht einfach ein einfaches altes 'UICollectionViewFlowLayout' und setze seine Eigenschaften oder koordinierst du mit seinem' delegate', wie die Klasse funktioniert? –
Ich habe deine Empfehlung ausprobiert, aber ich habe genau das gleiche Ergebnis. Warum wird nicht empfohlen, UiCollectionFlowLayout abzuleiten? –
Die Dokumente sind nicht spezifisch, aber sie beschreiben es als "konkret" vs. "abstrakt". Sie zeigen auch keine "Unterklassen-Notizen", die in anderen Klassen üblich sind. Können Sie Ihre Frage mit Ihrem neuen Ansatz aktualisieren? –