2013-03-20 18 views
23

Używam UICollectionView o szerokości komórki równej 67, teraz używam układu przepływu.UICollection Odległość między komórkami?

mam 3 komórek w jednym rzędzie z przestrzeni między komórkami równe 30. W jaki sposób można uczynić, że odległość mniej

więc mogę zmieścić cztery komórki w wierszu? Czy ta metoda ma z tym coś wspólnego?

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    return UIEdgeInsetsMake(10, 10, 10, 10); 
} 

Odpowiedz

40

Ta metoda UICollectionViewFlowLayoutDelegate pomoże ..

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section 
    { 
    return 10; // This is the minimum inter item spacing, can be more 
    } 

Jeden więcej, jeśli potrzeba więcej miejsca, aby zorganizować swoje komórki dostosować edgeInsets również

+0

Dla każdego, kto ma problemy z rozpoczęciem pracy z 'UICollectionViewFlowLayoutDelegate ', zobacz [tę odpowiedź] (http://stackoverflow.com/a/12925529/168594). – zekel

+3

Ustawia to minimum, ale jak ustawić maksimum? – Brabbeldas

+3

Tylko można zagwarantować minimumInteritemSpacing. Nie można ustawić maksymalnego lub rzeczywistego odstępu między elementami. Rzeczywista wartość zależy od wielkości elementu, sekcjiInset i minimalnejInteritemSpacing. Dostosuj te wartości, aby uzyskać odpowiednie zachowanie. Układ przepływu widoku kolekcji dynamicznie decyduje o rzeczywistej wartości. –

9

Nie, nie ma. Po prostu zmień układ minimumInteritemSpacing.

+0

Jaką metodę należy włożyć do? Jestem nowy w widokach kolekcji. –

+0

https://developer.apple.com/library/ios/documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html#//apple_ref/occ/instp/UICollectionViewFlowLayout/minimumInteritemSpacing – Sergey

5

Można użyć metody delegata takich jak: - do zmiany przestrzeń między komórkami w sekcji.

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section 

Do wyświetlania górnego i dolnego wyściółki y między komórkami różnych sekcji.

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section 

// Struktura: Zestaw Krawędzie wypustki // Ustawienie dla komórek

- (UIEdgeInsets)collectionView: 
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
//top,left,botttom,right 
14

Od this. Należy zmienić wartość minimalnejInteritemSpacing i minimumLineSpacing.

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init]; 
flow.itemSize = CGSizeMake(cellWidth, cellHeight); 
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal; 
flow.minimumInteritemSpacing = 0; 
flow.minimumLineSpacing = 0; 
mainCollectionView.collectionViewLayout = flow; 
2

miałem ten sam problem ..

W moim przypadku potrzebne retangular komórkę.

Aby osiągnąć pożądany wynik użyłem UICollectionViewDelegateFlowLayout.

To moja realizacja jednej metody:

- (CGSize)collectionView:(UICollectionView *)collectionView 
        layout:(UICollectionViewLayout*)collectionViewLayout 
    sizeForItemAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    CGFloat width = CGRectGetWidth(self.view.frame)/3.0f; 
    return CGSizeMake(width, (width * 1.1f)); 
} 

To działało w porządku dla mnie! Mam nadzieję, że to pomoże komuś.

10

Można skonfigurować odstępy między komórkami lub wierszami, korzystając z następujących właściwości.
1) Aby ustawić odstęp między wierszami.

[self.collectionView setMinimumLineSpacing:5]; 

2) Aby ustawić odstęp między przedmiotami/komórkami.

[self.collectionView setMinimumInteritemSpacing:5]; 

Można go również skonfigurować z InterfaceBuilder (IB). Po prostu wybierz UICollectionView z storyboard/Xib file i kliknij w Inspektor rozmiarów zgodnie z poniższym obrazkiem. enter image description here

1

swift 3.0

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { 

    if DEVICE_IDIOM == .pad { 
     return 15.0 
    } 
    else { 
     return 10.0 
    } 
} 
Powiązane problemy