UICollectionViewCell Auffüllung

8

Ich versuche Nullauffüllung auf Sammelansichtszellen zu setzen, ich habe "Min. Abstand" auf dem Ansichtscontroller auf:

gesetzt

Aber es hat immer noch Lücken zwischen den Zellen:

Ich würde es auch mögen, damit die Zellen gut umhüllen, abhängig von der Breite des Rahmens, zum Beispiel ist jede Zelle 50px breit, wenn es also sechs Zellen gibt und ich die Rahmenbreite auf 150px stelle, werden zwei angezeigt Linien von drei Zellen.

Aber wenn ich die Rahmenbreite auf 150 setze:

%Vor%

Es sieht aus wie im obigen Screenshot (zu breit).

Wenn ich es auf etwas lächerlich Kleines wie 10 setze, dann wird es teilweise umgebrochen:

Die UICollectionViewCell ist auf 50 x 50 gesetzt:

Ich habe auch versucht, die Größe der Zelle programmatisch zu setzen, und auch das UIEdgeInset entfernt:

%Vor%

Ich habe das automatische Layout deaktiviert, nur wenn es Störungen gegeben hat. Irgendwelche Ratschläge, wie ich die Polsterung entfernen und sie auch wickeln lassen kann, abhängig von der Rahmenbreite / -höhe?

    
StuR 03.01.2013, 18:58
quelle

4 Antworten

3

Sie verwenden einen UICollectionViewController, der wie ein UITableViewController die Auflistungsansicht (oder Tabellenansicht) als Basis-Eigenschaft view des Ansichtscontrollers hat. Dies bedeutet, dass die Größe nicht innerhalb des View-Controllers geändert werden kann. Seine Größe wird von seinem Superview gesteuert - entweder vom Fenster aus, das es als Root-View-Controller hat, oder von einem übergeordneten View-Controller, wenn Sie es einbetten.

Wenn Sie den Sammlungsansichtsbereich verkleinern möchten, sodass die Zellen aneinander anliegen, können Sie die Abschnittseinsätze der Sammlungsansicht im Storyboard ändern. In deinem Fall bringt ein Einsatz von 15 links und rechts die Zellen zusammen - das ist 9 * 50 (450) plus 30 = 480, was die Breite eines 3,5-Zoll-iPhone in der Landschaft ist.

Offensichtlich wird das beim iPhone 5 oder iPad anders sein. Sie können die Einfügungen entweder zur Laufzeit berechnen, eine Auflistungsansicht in einer standardmäßigen UIViewController-Unterklasse verwenden oder den UICollectionViewController als eingebetteten Ansichtscontroller halten. Die letzten beiden ermöglichen es Ihnen, nur eine Größe anzugeben, die wahrscheinlich schöner ist als das Berechnen von Einfügungen.

    
jrturton 03.01.2013, 22:32
quelle
3

Ich bin nicht sicher, dass diese Zellen im Screenshot 50x50 sind (BEARBEITEN: Ich schätze, sie sind ...).

Überprüfen Sie, ob Sie UICollectionViewDelegate und UICollectionViewDataSource verbunden haben.

Dies ist die Methode, die Sie implementieren müssen

%Vor%

Wenn es nicht funktioniert, versuchen Sie, diesen Code in viewDidLoad

einzufügen %Vor%     
Nikola Kirev 03.01.2013 21:26
quelle
3

Implementieren Sie diese Methode in Ihrem ViewController

%Vor%     
ahmad 19.12.2013 11:00
quelle
0

Der minimumInteritemSpacing-Wert ist genau das, ein Mindestwert. Er kann also größer sein, wenn die UICollectionViewLayout-Klasse entscheidet, dass er

sein muss

Um dies zu korrigieren, können Sie Ihre eigene Layout-Unterklasse erstellen und die - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath -Methode implementieren, ähnlich wie die Antwort von diese Frage (siehe die zweite Frage, nicht die als richtig markierte Frage)

%Vor%     
wattson12 03.01.2013 21:54
quelle