Tengo una UICollectionView
que 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
UICollectionViewDelegateFlowLayout
a su lista de delegados de ViewController para usar el métodoinsetForSectionAtIndex
Configuració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.collectionViewLayout
necesita 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
backgroundColor
de 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
itemsInOneLine
es 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.sectionInset
ocollectionView: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
CollectionItem
s use estoescribe estas dos líneas en viewdidload
fuente
Establezca la
insetForSectionAt
propiedad delUICollectionViewFlowLayout
objeto adjunto a suUICollectionView
Asegú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