2012-10-02 26 views
7

Tengo un CollectionView utilizando la clase FlowLayout serie con desplazamiento horizontal y un encabezado y pie en cada sección.UICollectionView: cómo agregar espacio entre el pie de página y el encabezado?

Ahora hay cero píxeles entre el pie de página y las vistas de cabecera (es decir, entre las secciones). Me gustaría agregar un pequeño espacio entre ellos, pero no sobre la primera sección o después de la última. Así que no puedo simplemente agregar ese espacio en las vistas de encabezado y pie de página.

lo que habría esperado algo así como "interSectionSpacing", pero al parecer no hay tal ajuste. ¿Algunas ideas?

Respuesta

9

Así resulta que no hay ningún ajuste para eso. Esto es lo que terminé con:

Configuré que el contenido de mi vista de encabezado se alineara con la parte inferior de la vista del encabezado, por lo que parece tener la misma altura visible, incluso si hago que la vista del encabezado sea más alta que su contenido (diseño automático hace que esto sea realmente fácil).

Entonces fijar la altura de la cabecera en función del índice de la sección en este método delegado de UICollectionViewFlowLayout:


#define kHeaderHeight 42 
#define kInterSectionMargin 8 

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section 
{ 
    if (section == 0) { 
     return CGSizeMake(0, kHeaderHeight); 
    } 
    return CGSizeMake(0, kHeaderHeight + kInterSectionMargin); 
} 

Ahora hay un pequeño espacio entre las secciones, pero no antes de la primera sección.

+1

Lo que has hecho es correcto - es exactamente lo que se supone que hacer. Usted está a cargo de la vista de encabezado. Como dices con razón, su contenido visible y su "altura" son dos cosas diferentes. – matt

0

Puede ajustar el espaciado entre encabezado y pie de página en el archivo con la plumilla. Vaya a 'Inspector de tamaño' de 'Vista de colección' y configure la Altura del tamaño del encabezado en el valor deseado.

+0

Sé lo que estás tratando de hacer aquí, pero que también puede añadir espacio antes del primer encabezado –

1

Tienes razón que no hay tal cosa como "interSectionSpacing", pero no es algo cercano.

Trate sectionInset en su UICollectionViewFlowLayout.

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; 
[flowLayout setSectionInset:UIEdgeInsetsMake(top, left, bottom, right)]; 
+0

Esto especifica la distancia entre el encabezado y el contenido y el contenido y los pies de página. Pero no entre el pie de página y el encabezado, por lo que, si bien está relacionado, no es lo que necesitaba el póster original –

Cuestiones relacionadas