Tengo una UICollectionViewque muestra fotos. He creado la vista de colección usando UICollectionViewFlowLayout. Funciona bien, pero me gustaría tener espacios en los márgenes. ¿Es posible hacer eso usandoUICollectionViewFlowLayout o debo implementar el mío UICollectionViewLayout?
ios
uicollectionview
uikit
Mert
fuente
fuente

UICollectionViewDelegateFlowLayouta su lista de delegados de ViewController para usar el métodoinsetForSectionAtIndexConfiguración de inserciones en Interface Builder como se muestra en la captura de pantalla a continuación
Resultará en algo como esto:
fuente
Para agregar espaciado en todo
UICollectionView:Para jugar con el espacio entre elementos de la misma fila (columna si se desplaza horizontalmente) y sus tamaños:
fuente
collection.collectionViewLayoutnecesita un reparto como en el ejemplo de @Pooja:UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout*) self.collectionViewLayout;if let flow = collectionViewLayout as? UICollectionViewFlowLayout { flow.itemSize = CGSize(width: 100, height: 100) }Swift 4
EDITAR XCode 11.4 y swift 5
no funciona Utilice a continuación obras.
let flow = UICollectionViewFlowLayout()fuente
backgroundColorde lacollectionView. O lo que sea la super vista.Solo para corregir información incorrecta en esta página:
1- minimalInteritemSpacing : el espaciado mínimo para usar entre elementos en la misma fila.
El valor predeterminado: 10.0.
(Para una cuadrícula de desplazamiento vertical, este valor representa el espacio mínimo entre los elementos en la misma fila).
2- minimalLineSpacing : el espaciado mínimo para usar entre líneas de elementos en la cuadrícula.
Ref: http://developer.apple.com/library/ios/#documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html
fuente
Swift moderno, cálculo de diseño automático
Si bien este hilo ya contiene un montón de respuestas útiles, quiero agregar una versión Swift moderna , basada en la respuesta de William Hu. También mejora dos cosas:
Aquí está el código:
fuente
itemsInOneLinees 1, esto dará como resultado un NaN debido a la división por cero aquí:itemsInOneLine / (itemsInOneLine - 1)use
setMinimumLineSpacing:ysetMinimumInteritemSpacing:en elUICollectionViewFlowLayout-Objeto.fuente
Usando
collectionViewFlowLayout.sectionInsetocollectionView:layout:insetForSectionAtIndex:son correctos.Sin embargo, si su collectionView tiene varias secciones y desea agregar margen a todo el collectionView, le recomiendo usar el scrollView contentInset:
fuente
Para poner espacio entre
CollectionItems use estoescribe estas dos líneas en viewdidload
fuente
Establezca la
insetForSectionAtpropiedad delUICollectionViewFlowLayoutobjeto adjunto a suUICollectionViewAsegúrate de agregar este protocolo
Rápido
C objetivo
fuente
En el objetivo-C
Todo lo que tiene que hacer es cambiar el valor de itemsPerRow y actualizará el número de elementos por fila en consecuencia. Además, puede cambiar el valor de espaciado si desea un espaciado más o menos general.
fuente
Para agregar márgenes a las celdas especificadas, puede usar este diseño de flujo personalizado. https://github.com/voyages-sncf-technologies/VSCollectionViewCellInsetFlowLayout/
fuente
En swift 4 y autoLayout, puede usar sectionInset de esta manera:
fuente
Para agregar una separación de 10px entre cada sección simplemente escriba esto
fuente
fuente