Ich habe eine UICollectionView, die ich eingerichtet habe, funktioniert alles gut (Auswahl, Header usw.), aber ich möchte die Bildlaufrichtung in einigen Situationen ändern.Scroll-Richtung in UICollectionView ändern
Kurz gesagt, wenn ich in das Storyboard gehe und die scrollDirection ändere, funktioniert es gut, aber ich möchte es programmatisch machen!
Ich habe versucht, mit so etwas wie
[myCollectionView setScrollDirection:....and so on.......
Aber dies funktioniert, kann ich dort finden scrollDirection oder ähnliches nicht die Rolle nicht Richtung der Sammlung Ansicht direkt zu ändern.
Ich habe auch versucht, ein Flusslayout einzurichten, aber ich bin mir sicher, dass ich das falsch mache (d. H. Versuche, ein ViewLayout auf ein FlowLayout zu setzen).
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[myCollectionView setCollectionViewLayout:flowLayout];
Dieser stürzt mit vielen Constraint Problemen und ich vermute, ich brauche viel mehr Arbeit mit dem Flowlayout zu tun (von dem, was ich gefunden habe, ist es ein bisschen über mir jetzt).
Es sollte auch beachtet werden, dass ich eine benutzerdefinierte Zelle, Kopf- und Fußzeilen verwenden.
Kurz gesagt gibt es einen einfachen Weg, dies zu tun oder nicht? ODER kennt jemand ein gutes Flow Layout Tutorial?
EDIT
I Setup die Auflistungsansicht als solche;
[myCollectionView setDataSource:self];
[myCollectionView setDelegate:self];
ich diese Delegatmethoden implementieren und alle funktionieren
viewForSupplementaryElementOfKind
numberOfSectionsInCollectionView
numberOfItemsInSection
cellForItemAtIndexPath
didSelectItemAtIndexPath
Ich habe die Datasource und Delegierter des .h hinzugefügt und auch die Flow delegieren, aber ich bin nicht sicher, was ich auch für haben sollte Letzteres.
Der Großteil des visuellen Layouts wird in Story Board erledigt, es gibt ein paar Dinge wie Schriftart, Größe und Farbe, die ich programmatisch mache.
ANOTHER EDIT
Dies ist der Fehler, wenn ich versuche, das Flowlayout zu ändern, ich dies auch, wenn ich das Layout versuchen und ungültig machen.
Konnte gleichzeitig Einschränkungen nicht erfüllen. Wahrscheinlich ist mindestens eine der Einschränkungen in der folgenden Liste eine, die Sie nicht möchten. Versuchen Sie Folgendes: (1) Sehen Sie sich jede Einschränkung an und versuchen Sie herauszufinden, was Sie nicht erwarten; (2) finde den Code, der die unerwünschte Einschränkung oder die Nebenbedingungen hinzugefügt hat, und behebe sie. (Hinweis: Wenn Sie sehen NSAutoresizingMaskLayoutConstraints, die Sie nicht verstehen, finden Sie in der Dokumentation für die UIView Eigenschaft translatesAutoresizingMaskIntoConstraints)
"<NSAutoresizingMaskLayoutConstraint:0x89967f0 h=--& v=--& V:[menuCell:0x8991700(50)]>",
"<NSLayoutConstraint:0x8991200 menuCell:0x8991700.bottom == UILabel:0x8992be0.bottom + 100>",
"<NSLayoutConstraint:0x898fd50 UILabel:0x8992be0.top == menuCell:0x8991700.top + 3>"
Wird durch erholen versuchen, Zwang zu brechen
Pause auf objc_exception_throw zu fangen dies im Debugger. Die Methoden in der UIConstraintBasedLayoutDebugging-Kategorie in UIView, die in aufgeführt sind, können ebenfalls hilfreich sein.
Ist die Ansicht, in der die Sammlung im Hinblick auf das UICollectionViewFlowLayoutDelegate Protokoll entsprechen gezogen wird? Sind Sie sicher, dass die Menge an Inhalten, die Sie zeichnen möchten, groß genug ist, um zu gewährleisten, dass die Sammlungsansicht tatsächlich scrollt? Können wir mehr von der Einrichtung der Sammlungsansicht sehen? Sie bewegen sich in die richtige Richtung, indem Sie versuchen, die Bildlaufrichtung auf dem Flow-Layout einzustellen, also guten Start! –
@MatthewHallatt Ich habe ein wenig mehr Info hinzugefügt. Dies ist ein großer Tisch, es könnten 50-60 Gegenstände in 4 oder 5 Teilen sein. Die Sammlungsansicht ist ein langer Balken am unteren Rand, der horizontal scrollt, Button kann angeklickt werden, wodurch die Sammlung fast auf den größten Teil des Bildschirms erweitert wird (was funktioniert), aber ich möchte, dass das Scrollen zum vertikalen Scrollen geht. –