2016-03-31 11 views
-1

Ich stehe vor einem Problem, wo ich eine UICollectionView realisieren möchte, die im Wesentlichen von der Mitte aufbaut.Build UICollectionView von der Mitte

Lassen Sie uns sagen, dass ich diese Ansicht haben, die eine Liste von Menschen zeigt:

First view

Wenn der Benutzer mehrere Personen hält das Hinzufügen mit dem +, möchte ich die Collection zu erweitern, sondern in der Mitte zu bleiben der Ansicht:

enter image description hereenter image description here

Wie erkenne ich dieses Verhalten?

+0

Bitte geben Sie Ihren Code hier ein. – Khuong

+0

Nun, ich verwende gerade die Standardimplementierung einer 'UICollectionView', aber diese startet, wie Sie wissen, in der oberen linken Ecke der Ansicht. – James

+0

Wie implementieren Sie + Schaltfläche? – Khuong

Antwort

0

Wenn Sie nicht automatisches Layout und Größenklassen verwenden, dann können Sie so ...

„center“ ist eine Sammlung Ansicht verwenden
[collectionView setCenter:self.view.center]; 

Und wenn automatisches Layout aktiviert ist und Sie verwenden es dies dann tun. ..

  1. Set CenterX und CenterY schränkt der Sammlung Ansicht
  2. Set Höhe und Breite Zwänge der Sammlung Ansicht
+0

Damit dies funktionieren würde t Sie müssen die Höhe der Ansicht ändern, sonst werden die Zellen wie gewöhnlich am oberen Bildschirmrand positioniert (wenn die Ansicht collection voll ist). –

+0

Dann müssen Sie führende, obere, hintere und untere Beschränkungen mit niedriger Priorität geben, so dass es im Bildschirm –

+0

bleibt ... und die Höhe der Sammlungsansicht jedes Mal überprüfen und ändern, wenn neue Zellen hinzugefügt werden, um alle Zellen anzuzeigen und im Zentrum bleiben. Vielleicht gibt es einen besseren Ansatz? –

0

Anstelle eines benutzerdefinierten Flow Layout, ein alternativer Ansatz eine volle Höhe Sammlung Ansicht als normal zu haben wäre und dann eine obere und untere Einschub auf visuell die Zellen Zentrum:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ 

    let inset = (collectionView.frame.size.height - ((COUNT_OF_CELLS/CELLS_PER_ROW) * HEIGHT_OF_CELL)/2) 
    return UIEdgeInsetsMake(inset, 0, inset, 0); 
} 

Sie müssen den Überblick behalten der Gesamtzahl der Zellen, der Anzahl der Zellen in einer Reihe und der Zellenhöhe, damit die Berechnung richtig funktioniert.

Verwandte Themen