2012-10-02 14 views
7

Ho un oggetto CollectionView che utilizza la classe standard FlowLayout con scorrimento orizzontale e un'intestazione e un piè di pagina in ogni sezione.UICollectionView: come aggiungere spazio tra piè di pagina e intestazione?

Ora c'è zero pixel tra il piè di pagina e le visualizzazioni di intestazione (cioè tra le sezioni). Mi piacerebbe aggiungere una piccola spaziatura tra di loro, ma non sopra la prima sezione o dopo l'ultima. Quindi non posso semplicemente aggiungere quello spazio nelle visualizzazioni di intestazione e piè di pagina.

Mi sarei aspettato qualcosa come "interSectionSpacing", ma a quanto pare non esiste tale impostazione. Qualche idea?

risposta

9

Quindi non ci sono impostazioni per questo. Questo è quello che ho finito con:

Ho impostato il contenuto della mia vista di intestazione per essere allineato alla parte inferiore della vista dell'intestazione stessa, quindi sembra avere la stessa altezza visibile, anche se faccio la vista dell'intestazione più alta rispetto al suo contenuto (il layout automatico lo rende molto semplice).

Poi impostare l'altezza dell'intestazione a seconda dell'indice sezione in questo metodo delegato di 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); 
} 

Ora c'è un piccolo spazio tra le sezioni, ma non prima della prima sezione.

+1

Quello che hai fatto è corretta - è esattamente quello che si dovrebbe fare. Sei responsabile della vista dell'intestazione. Come giustamente dici, il suo contenuto visibile e la sua "altezza" sono due cose diverse. – matt

0

È possibile impostare la spaziatura tra intestazione e piè di pagina con il file Nib. Vai a "Impostazioni dimensione" di "Vista raccolta" e imposta Altezza dimensione intestazione sul valore desiderato.

+0

So quello che stai cercando di fare qui, ma che sarà anche aggiungere lo spazio prima della prima intestazione –

1

Hai ragione non esiste "interSectionSpacing", ma c'è qualcosa di simile.

Prova sectionInset sul tuo UICollectionViewFlowLayout.

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

Specifica la distanza tra intestazione e contenuto e contenuto e piè di pagina. Ma non tra il piè di pagina e l'intestazione, quindi anche se correlato, non è ciò di cui ha bisogno il poster originale –

Problemi correlati