2012-10-02 10 views
7

Mam CollectionView przy użyciu standardowej klasy FlowLayout z przewijaniem poziomym oraz nagłówkiem i stopką w każdej sekcji.UICollectionView: Jak dodać odstęp między stopką a nagłówkiem?

Teraz między stopką a widokami nagłówka występuje zero pikseli (tj. Między sekcjami). Chciałbym dodać trochę odstępów między nimi, ale nie powyżej pierwszej sekcji lub po ostatniej. Nie mogę więc dodać tego miejsca w widokach nagłówka i stopki.

Spodziewałam się czegoś takiego jak "interSectionSpacing", ale podobno nie ma takiego ustawienia. Jakieś pomysły?

Odpowiedz

9

Okazuje się, że nie ma na to ustawienia. Właśnie to otrzymałem:

Ustawiłem zawartość mojego widoku nagłówka tak, aby była wyrównana do samego dołu widoku nagłówka, więc wygląda na to, że ma taką samą widoczną wysokość, nawet jeśli zwiększam widok nagłówka niż jego zawartość (automatyczny układ czyni to naprawdę łatwym).

Potem ustawić wysokość nagłówka w zależności od indeksu sekcji w tej metodzie delegata 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); 
} 

teraz jest trochę przestrzeni pomiędzy sekcjami, ale nie przed pierwszą sekcją.

+1

Co zrobiłeś jest poprawne - to jest dokładnie to, co masz robić. Jesteś odpowiedzialny za widok nagłówka. Jak słusznie powiadasz, jego widoczna treść i jej "wysokość" to dwie różne rzeczy. – matt

0

Możesz ustawić odstępy między nagłówkiem i stopką w pliku Nib. Przejdź do "Inspektora rozmiarów" z "Widok kolekcji" i ustaw Wysokość hedera na pożądaną wartość.

+0

Wiem, co próbujesz zrobić tutaj, ale będzie również dodać spację przed pierwszym nagłówku –

1

Masz rację, nie ma czegoś takiego jak "interSectionSpacing", ale jest coś bliskiego.

Wypróbuj sectionInset na swojej UICollectionViewFlowLayout.

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

Określa odległość między nagłówkiem i treścią oraz zawartością i stopkami. Ale nie pomiędzy stopką a nagłówkiem, więc w powiązaniu nie jest to, czego potrzebował oryginalny plakat –

Powiązane problemy