uicollectionviewcontroller ios objective-c uicollectionview storyboard uicollectionviewflowlayout

ios - uicollectionviewcontroller - uicollectionviewcell indexpath



UICollectionView-distancia entre celdas? (7)

Estoy usando un UICollectionView con el ancho de celda de 67, en este momento estoy usando un diseño de flujo.

Tengo 3 celdas en una fila con espacio de 30px entre celdas. ¿Cómo puedo reducir esa distancia para que pueda colocar cuatro celdas en una fila? ¿Tiene este método algo que ver con eso?

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(10, 10, 10, 10); }


De this Debe cambiar minimumInteritemSpacing y minimumLineSpacing .

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init]; flow.itemSize = CGSizeMake(cellWidth, cellHeight); flow.scrollDirection = UICollectionViewScrollDirectionHorizontal; flow.minimumInteritemSpacing = 0; flow.minimumLineSpacing = 0; mainCollectionView.collectionViewLayout = flow;


Este método UICollectionViewFlowLayoutDelegate te ayudará a ...

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { return 10; // This is the minimum inter item spacing, can be more }

Una vez más, si necesita más espacio para organizar sus celdas, ajuste también los edgeInsets


No, no lo hace. Simplemente cambia el minimumInteritemSpacing el diseño del minimumInteritemSpacing .


Puede configurar el espaciado entre celdas o filas utilizando las siguientes propiedades.
1) Para configurar el espacio entre filas.

[self.collectionView setMinimumLineSpacing:5];

2) Para configurar el espacio entre elementos / celdas.

[self.collectionView setMinimumInteritemSpacing:5];

También puede configurarlo desde InterfaceBuilder (IB). Simplemente seleccione UICollectionView desde el guión gráfico / archivo Xib y haga clic en Size Inspector como se especifica en la imagen de abajo.


Puede usar el método de delegado como: - para cambiar el espacio entre las celdas de una sección.

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section

Para mostrar el relleno superior, inferior y entre celdas de diferentes secciones.

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

// Diseño: Establecer bordes // configuración de ajustes para la celda

- (UIEdgeInsets)collectionView: (UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section //top,left,botttom,right


Tuve el mismo problema ..

En mi caso necesitaba una célula retangular.

Para lograr el resultado deseado, utilicé UICollectionViewDelegateFlowLayout .

Esta es mi implementación de uno de los métodos:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath; { CGFloat width = CGRectGetWidth(self.view.frame)/3.0f; return CGSizeMake(width, (width * 1.1f)); }

¡Esto funcionó bien para mi! Espero que esto ayude a alguien.


swift 3.0

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { if DEVICE_IDIOM == .pad { return 15.0 } else { return 10.0 } }