Wie kann man nicht-scrollbare UICollectionView in UIScrollView implementieren?

8

Kurz gesagt, mein gewünschtes Bildschirmlayout ist im Grunde ein Benutzerprofil (iOS 7 + Xcode 5). Ich habe UIScrollView als oberste Ansicht verwendet. Der Grund ist, dass ich möchte, dass alle Unteransichten scrollen (Benutzerinfo-Ansicht - die Ansicht mit einem Profilbild und einigen Schaltflächen auf dem Bildschirm und die Fotosammlungsansicht - die mit schwarzen Hintergrund), wenn es gescrollt wird.

Die Region mit schwarzem Hintergrund zeigt Benutzerfotos. Ich frage mich, ob ich hier eine UICollectionView verwenden könnte, oder es gibt eine bessere Möglichkeit, sie zu implementieren. Die UICollectionView sollte in diesem Fall nicht in der Lage sein, selbst zu scrollen, sie zeigt nur alle Zellen an, während die Scroll-Arbeit von der äußersten UIScrollView behandelt wird.

Ich habe folgende Beiträge gelesen:

UICollectionView in UIScrollView

UICollectionView in UIScrollView - & gt; Scrollreihenfolge

iOS 7-Sammlung In der Bildlaufansicht anzeigen

Einige sagten, dass es nicht möglich (oder zumindest seltsam) ist, UICollectionView in UIScrollView zu implementieren, weil UIScrollView die Superklasse von UICollectionView ist, die zu unerwartetem Verhalten führt. Einige sagten, es sollte auf andere Weise umgesetzt werden (aber ich sah keinen klaren Vorschlag).

    
Thiem Nguyen 12.08.2014, 04:13
quelle

1 Antwort

7

Ja, Sie können ein UICollectionView in ein UIScrollView setzen. iOS hat seit iOS 3.0 vollständig geschachtelte Scroll-Ansichten unterstützt und UICollectionView ist eine Unterklasse von UIScrollView . Sehen Sie sich zum Beispiel die App App App auf Ihrem iOS-Gerät an. Der Bildschirm scrollt vertikal - es ist entweder ein UIScrollView oder ein UITableView (was selbst eine Unterklasse von UIScrollView ist). Und jede Reihe von Symbolen scrollt horizontal - jede Zeile ist ein UICollectionView .

Es ist jedoch nicht klar, warum Sie eine Sammlungsansicht in eine Bildlaufansicht einfügen müssen. Es klingt so, als ob Sie nur die Fotosansicht scrollen möchten. Machen Sie also die Fotosansicht zu einer Sammlungsansicht. Warum müssen Sie die Sammlungsansicht in eine Bildlaufansicht einfügen?

AKTUALISIEREN

Verwenden Sie einfach eine Sammlungsansicht. Setzen Sie die Kopfzeile von Abschnitt 0 auf die Profildatenansicht. Sie benötigen keine Bildlaufansicht.

Wenn Sie alle Fotos in einem Abschnitt ablegen, können Sie die Kopfzeile in Ihrem Storyboard ohne Code einrichten. Wenn Sie mehrere Abschnitte verwenden, müssen Sie collectionView:layout:referenceSizeForHeaderInSection: in Ihrem Delegaten und collectionView:viewForSupplementaryElementOfKind:atIndexPath: in Ihrer Datenquelle implementieren.

    
rob mayoff 12.08.2014, 04:22
quelle