ios ios6 uicollectionview

ios - Obtenga el número de filas en UICollectionView



ios6 (1)

Puede obtener la posición de un artículo después de que [myCollectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:] con [myCollectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:]

Si no conoce las dimensiones de sus artículos, o no quiere asumir que lo hace, un enfoque sería iterar sobre los artículos en su colección y buscar un cambio de paso en la posición Y del artículo. Obviamente, esto solo funciona si está usando un diseño basado en la cuadrícula.

Esto hace el truco:

NSInteger totalItems = [myCollectionView numberOfItemsInSection:0]; // How many items are there per row? NSInteger currItem; CGFloat currRowOriginY = CGFLOAT_MAX; for (currItem = 0; currItem < totalItems; currItem++) { UICollectionViewLayoutAttributes *attributes = [collectionView.collectionViewLayout layoutAttributesForItemAtIndexPath: [NSIndexPath indexPathForItem:currItem inSection:0]]; if (currItem == 0) { currRowOriginY = attributes.frame.origin.y; continue; } if (attributes.frame.origin.y > currRowOriginY + 5.0f) { break; } } NSLog(@"new row started at item %ld", (long)currItem); NSInteger totalRows = totalItems / currItem; NSLog(@"%ld rows", (long)totalRows);

Si conoce las dimensiones de sus artículos, puede obtener la posición del último artículo con

NSInteger totalItems = [self.timelineCollectionView numberOfItemsInSection:0]; NSIndexPath lastIndex = [NSIndexPath indexPathForItem:totalItems - 1 inSection:0]; UICollectionViewLayoutAttributes *attributes = [myCollectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:lastIndex]; // Frame of last item is now in attributes.frame

Luego tome las dimensiones de ese último artículo y divida por la altura de fila conocida. No te olvides de dar cuenta de los encabezados o espacios. Estas propiedades también están disponibles desde UICollectionViewFlowLayout .

Tire del diseño de flujo con

UICollectionViewFlowLayout *myFlowLayout = (UICollectionViewFlowLayout*)myCollectionView.collectionViewFlowLayout;

Y mira adentro

myFlowLayout.headerReferenceSize myFlowLayout.minimumLineSpacing

y así.

La vista UICollection ajusta automáticamente el número de filas según la cantidad de elementos por sección y el tamaño de cada celda.

Entonces, ¿hay alguna manera de obtener el número de filas en un UICollectionView?

Por ejemplo: si tengo un calendario con 31 días que encaje automáticamente en n filas. ¿Cómo obtengo el valor de esta ''n''?