Antwort

1

da Ihr Layout, dass es zeigt, 3 Zellen pro Reihe sein wird. Sie müssen die Breite der Sammlungsansicht mit 3 plus Leerzeichen für Trennzeichen teilen. Ein guter Weg ist, die Ansicht links oben rechts mit dem automatischen Layout zu verbinden. und benutze eine Dummy-Zelle mit einem Label als Zentrum. Sie müssen programmatisch für diesen Delegaten arbeiten.

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGFloat screenWidth = collectionViewFrame.size.width; 
    float cellWidth = screenWidth/3.0 - 20; //Replace the divisor with the column count requirement. Make sure to have it in float. 
    CGSize size = CGSizeMake(cellWidth, cellWidth); 

    return size; 
} 
+0

Was wäre die entsprechende Version in Swift? Ich kann es nicht finden. –

+1

Dies ist eine schnelle äquivalente Version. func collectionView (collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize –

0

Für die Sammlungsansicht können Sie den Abstand zwischen Linien und Zelle vom Storyboard festlegen. Zunächst müssen Sie den Mindestabstand für Zeile und Zelle festlegen.

enter image description here

Dann brauchen Sie für die Zell dynamische Breite einzustellen, basierend auf Gerätebreite, und stellen Sie sicher, 2 * Mindestabstand von dem abzuziehen width.and auch Abschnitt Einsätze abziehen, wenn es einen für links ist oder richtig.

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
return CGSizeMake((Device_Width/3.0)-2*(Minimum cell spacing+section_insets.left), 120.0) 

//for iphone 4 in my case 

CGSizeMake // return ((320/3,0) - (2 * 1) bis 2 (10), 100.0) }

Gerätebreite Gerätebreite ist. Mindestzellenabstand, den Sie im Storyboard section_inset.left festgelegt haben, was ebenfalls dem Storyboard-Wert entspricht.

+0

Ich bekomme bereits dieses Ergebnis, aber ich möchte dies mit Autolayout. –

+0

müssen Sie möglicherweise eine Bezeichnung (1 - 9) und Bild (X) können Sie Constraint von beiden als ** Mitte horizontal und Mitte vertikal ** festlegen. Also, wenn die Zellenbreite durch Code erhöht wird, dann auch, dass beide in der Mitte sein werden. – Bhavik