Mam zdjęcie, UICollectionView
które pokazuje. Utworzyłem widok kolekcji za pomocą UICollectionViewFlowLayout
. Działa dobrze, ale chciałbym mieć odstępy na marginesach. Czy można to zrobić za pomocą, UICollectionViewFlowLayout
czy muszę zaimplementować własne UICollectionViewLayout
?
ios
uicollectionview
uikit
Mert
źródło
źródło
UICollectionViewDelegateFlowLayout
do listy delegatów ViewController, aby użyć tej metodyinsetForSectionAtIndex
Konfigurowanie wypustek w Konstruktorze interfejsów, jak pokazano na zrzucie ekranu poniżej
Spowoduje to coś takiego:
źródło
Aby dodać odstępy dla całego
UICollectionView
:Aby bawić się odstępami między elementami tego samego wiersza (kolumny, jeśli przewijasz w poziomie) i ich rozmiarami:
źródło
collection.collectionViewLayout
wymaga obsady, jak w przykładzie autorstwa @Pooja:UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*) self.collectionViewLayout;
if let flow = collectionViewLayout as? UICollectionViewFlowLayout { flow.itemSize = CGSize(width: 100, height: 100) }
Szybki 4
EDYTUJ XKod 11.4 i szybki 5
nie działa Użyj poniższych prac.
let flow = UICollectionViewFlowLayout()
źródło
backgroundColor
zcollectionView
. Lub cokolwiek super widok.Aby poprawić nieprawidłowe informacje na tej stronie:
1- minimumInteritemSpacing : minimalny odstęp między elementami w tym samym rzędzie.
Wartość domyślna: 10,0.
(W przypadku siatki przewijanej pionowo ta wartość reprezentuje minimalne odstępy między elementami w tym samym rzędzie.)
2- minimumLineSpacing : minimalny odstęp między wierszami elementów na siatce.
Patrz: http://developer.apple.com/library/ios/#documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html
źródło
Nowoczesne szybkie, automatyczne obliczanie układu
Chociaż ten wątek zawiera już kilka przydatnych odpowiedzi, chcę dodać nowoczesną wersję Swift , opartą na odpowiedzi Williama Hu. Poprawia także dwie rzeczy:
Oto kod:
źródło
itemsInOneLine
wynosi 1, spowoduje to powstanie NaN z powodu dzielenia przez zero tutaj:itemsInOneLine / (itemsInOneLine - 1)
użyj
setMinimumLineSpacing:
isetMinimumInteritemSpacing:
naUICollectionViewFlowLayout
-Object.źródło
Używanie
collectionViewFlowLayout.sectionInset
lubcollectionView:layout:insetForSectionAtIndex:
są poprawne.Jeśli jednak twoja kolekcjaView ma wiele sekcji i chcesz dodać margines do całej kolekcjiView, polecam użyć scrollView contentInset:
źródło
Aby wstawić spację,
CollectionItem
użyj tegonapisz dwie linie w polu viewdidload
źródło
Ustaw
insetForSectionAt
właściwośćUICollectionViewFlowLayout
obiektu dołączonego do twojegoUICollectionView
Pamiętaj, aby dodać ten protokół
Szybki
Cel C
źródło
W celu C
Wszystko, co musisz zrobić, to zmienić wartość itemsPerRow i odpowiednio zaktualizuje liczbę elementów w wierszu. Co więcej, możesz zmienić wartość odstępów, jeśli chcesz mniej lub bardziej ogólne odstępy.
źródło
Aby dodać marginesy do określonych komórek, możesz użyć tego niestandardowego układu przepływu. https://github.com/voyages-sncf-technologies/VSCollectionViewCellInsetFlowLayout/
źródło
W swift 4 i autoLayout możesz użyć sectionInset w następujący sposób:
źródło
Aby dodać 10px separację między każdą sekcją, po prostu napisz to
źródło
źródło