Ich habe eine, UICollectionView
die Fotos zeigt. Ich habe die Sammlungsansicht mit erstellt UICollectionViewFlowLayout
. Es funktioniert gut, aber ich hätte gerne Abstand an den Rändern. Ist das möglich UICollectionViewFlowLayout
oder muss ich mein eigenes implementieren UICollectionViewLayout
?
ios
uicollectionview
uikit
Mert
quelle
quelle
UICollectionViewDelegateFlowLayout
Denken Sie daran, Ihrer Liste der ViewController-Delegierten hinzuzufügen, um die Methode zu verwendeninsetForSectionAtIndex
Einrichten von Insets in Interface Builder wie im folgenden Screenshot gezeigt
Wird zu so etwas führen:
quelle
So fügen Sie den gesamten Abstand hinzu
UICollectionView
:So spielen Sie mit dem Abstand zwischen Elementen derselben Zeile (Spalte, wenn Sie horizontal scrollen) und deren Größe:
quelle
collection.collectionViewLayout
braucht eine Besetzung wie im Beispiel von @Pooja:UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*) self.collectionViewLayout;
if let flow = collectionViewLayout as? UICollectionViewFlowLayout { flow.itemSize = CGSize(width: 100, height: 100) }
Swift 4
BEARBEITEN SIE XCode 11.4 und schnell 5
funktioniert nicht Verwendung unten funktioniert.
let flow = UICollectionViewFlowLayout()
quelle
backgroundColor
voncollectionView
. Oder was auch immer die super Aussicht.Nur um einige falsche Informationen auf dieser Seite zu korrigieren:
1- MinimumInteritemSpacing : Der minimale Abstand zwischen Elementen in derselben Zeile.
Der Standardwert: 10.0.
(Bei einem vertikal scrollenden Raster stellt dieser Wert den Mindestabstand zwischen Elementen in derselben Zeile dar.)
2- MinimumLineSpacing : Der minimale Abstand zwischen Zeilen von Elementen im Raster.
Ref: http://developer.apple.com/library/ios/#documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html
quelle
Moderne schnelle, automatische Layoutberechnung
Während dieser Thread bereits eine Reihe nützlicher Antworten enthält, möchte ich eine moderne Swift-Version hinzufügen , die auf der Antwort von William Hu basiert. Es verbessert auch zwei Dinge:
Hier ist der Code:
quelle
itemsInOneLine
1 ist, führt dies zu einer NaN, da hier durch Null geteilt wird:itemsInOneLine / (itemsInOneLine - 1)
benutze
setMinimumLineSpacing:
undsetMinimumInteritemSpacing:
auf demUICollectionViewFlowLayout
-Object.quelle
Verwenden
collectionViewFlowLayout.sectionInset
odercollectionView:layout:insetForSectionAtIndex:
sind richtig.Wenn Ihre collectionView jedoch mehrere Abschnitte enthält und Sie der gesamten collectionView einen Rand hinzufügen möchten, empfehle ich die Verwendung des scrollView contentInset:
quelle
CollectionItem
Verwenden Sie dies, um Platz zwischen s zu setzenSchreiben Sie diese beiden Zeilen in viewdidload
quelle
Legen Sie die
insetForSectionAt
Eigenschaft desUICollectionViewFlowLayout
an Ihr angehängten Objekts festUICollectionView
Stellen Sie sicher, dass Sie dieses Protokoll hinzufügen
Schnell
Ziel c
quelle
In Ziel-C
Sie müssen lediglich den Wert für itemsPerRow ändern und die Anzahl der Elemente pro Zeile entsprechend aktualisieren. Darüber hinaus können Sie den Abstandswert ändern, wenn Sie mehr oder weniger allgemeinen Abstand wünschen.
quelle
Zum Hinzufügen von Rändern zu bestimmten Zellen können Sie dieses benutzerdefinierte Ablauflayout verwenden. https://github.com/voyages-sncf-technologies/VSCollectionViewCellInsetFlowLayout/
quelle
In Swift 4 und AutoLayout können Sie sectionInset wie folgt verwenden :
quelle
Um einen Abstand von 10 Pixel zwischen den einzelnen Abschnitten hinzuzufügen, schreiben Sie dies einfach
quelle
quelle