UICollectionViewLayout Beispiele
Kann jemand mich in die richtige Richtung, wie ich verwenden könnte, UICollectionViewLayout eine Schnittstelle zu erstellen, ähnlich dem Pinterest-Spalten-layout?
Ich habe versucht, online-Suche, aber wie es aussieht gibt es nicht viele Beispiele gibt es noch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den 1000memories "Quilt" - Sicht ist pinterest-like und open source: http://blog.1000memories.com/168-opensourcing-quilt, und Sie können Graben Sie sich durch, um zu sehen, wie es funktioniert.
Wenn Sie auf der Suche für eine grundlegende übersicht, hier ist die grundlegende Idee von dem, was Sie gehen zu wollen, zu tun. Die einfachste Sache von der weit, wenn Sie nur ein Pinterest-Stil layout, um eine Unterklasse
UICollectionViewFlowLayout
. Sie bekommen eine Menge von layout helfen, aus dieser Klasse, und Pinterest-Stil ist in seinen Fähigkeiten. Sie brauchen nur zu überschreiben einer Methode.Einrichten eines normalen UICollectionView mit UICollectionViewFlow layout. Eine schnelle Möglichkeit, dies zu tun ist:
(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
(NSInteteger)collectionView:numberOfItemsInSection:
(UICollectionViewCell *)collectionView:cellForItemAtIndexPath:
dequeueReusableCellWithReuseIdentifier:forIndexPath:
mit der index-Pfad. Wenn Sie einen UIImageView oder einige labels, die Zelle, das wäre ein großartiger Ort, um tatsächlich weisen die Bild -, text -, etc.In der viewController ist
viewDidLoad
instanziierenUICollectionViewFlowLayout
und legen Sie die UICollectionView datasource zu verkaufen und layout auf flowlayout. Denken Sie daran, diese Klasse ist eine Unterklasse vonUICollectionViewViewController
.Ok. An diesem Punkt sollten Sie in der Lage zu führen Sie Ihre app aus und sehen ein paar Sachen auf dem Bildschirm. Dies ist ein Wirbelwind übersicht. Wenn Sie weitere Informationen zum einrichten ViewControllers und so gibt es Tonnen von Sachen, die zur Verfügung über, die.
Nun kommt der wichtige Teil, Pinterest-izing der flow-layout.
Fügen Sie zunächst eine neue Klasse, die eine Unterklasse von UIViewControllerFlowLayout. Ändern Sie Ihre ViewController ist
viewDidLoad
diese Klasse instanziieren und weisen, wie dieUICollectionView
'scollectionViewLayout
.Die Methode, die Sie benötigen werden, um zu implementieren ist
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
.Hier ist das Ding: Die Oberklasse machen werde fast alle arbeiten für Sie. Ihr code wird in etwa so Aussehen:
Pinterest verwendet eine Feste Breite Spalten, alles, was Sie tun müssen, um in Ihre Berechnung Methode ist herauszufinden, welche Spalte Sie sich befinden (`attr.Herkunft.x /_columnWidth), und suchen Sie bis der Höhe, die in dieser Spalte aus der ivar Sie habe es zu speichern in. Vergessen Sie nicht, fügen Sie es zu dem neuen Objekt die Höhe, und speichern Sie es zurück für den nächsten Durchgang.
Dem flow-layout Superklasse Griffe: Herstellung von Zellen, die Bestimmung, welche Zellen sichtbar sind, herauszufinden, den Inhalt Größe, herauszufinden, die Anordnung der Zeilen in x-Richtung, die Zuordnung von index-Pfade zu den Zellen. Viel junk. Und überschreiben, dass eine Methode, können Sie die Geige mit dem y-pos das Herz begehrt.
Hier zwei von github
https://github.com/jayslu/JSPintDemo
https://github.com/chiahsien/UICollectionViewWaterfallLayout
Habe ich eine modifizierte version von Wasserfall in einem Projekt, und ich bin untersucht JSPint jetzt.
Habe ich eine benutzerdefinierte uicollectionviewlayout, die in meinem persönlichen Projekt. Hier ist der link. Hoffe, es hilft.
https://github.com/johnny0614/YJZAlbumCollectionViewLayout
Können Sie bekommen, was Sie wollen von hier:
https://github.com/ParsifalC/CPCollectionViewKit
Zum Beispiel(diese beiden layouts sind individuell UICollectionViewLayout):