web-dev-qa-db-fra.com

UICollectionView - distance entre les cellules?

J'utilise un UICollectionView avec une largeur de cellule de 67, en ce moment j'utilise une disposition de flux.

J'ai 3 cellules d'affilée avec un espace de 30 pixels entre les cellules. Comment réduire cette distance afin de pouvoir tenir quatre cellules d'affilée? Cette méthode a-t-elle quelque chose à voir avec cela?

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

Cette méthode UICollectionViewFlowLayoutDelegate vous aidera ..

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

Un de plus si vous avez besoin de plus d'espace pour organiser vos cellules, ajustez également edgeInsets

43
Anil Varghese

Vous pouvez configurer l'espacement entre les cellules ou les lignes à l'aide des propriétés suivantes.
1) Pour définir l'espace entre les lignes.

[self.collectionView setMinimumLineSpacing:5];

2) Pour définir l'espace entre les éléments/cellules.

[self.collectionView setMinimumInteritemSpacing:5];

Vous pouvez également le configurer à partir d'InterfaceBuilder (IB). Sélectionnez simplement UICollectionView dans le fichier storyboard/Xib et cliquez sur Inspecteur de taille comme spécifié dans l'image ci-dessous. enter image description here

20
Aamir

De ceci . Vous devez modifier minimumInteritemSpacing et minimumLineSpacing .

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

Non, non. Modifiez simplement le minimumInteritemSpacing de la mise en page.

9
matt

Vous pouvez utiliser la méthode déléguée comme: - pour changer l'espace entre les cellules d'une section.

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

Pour afficher le remplissage en haut et en bas entre les cellules de différentes sections.

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

// Disposition: définir les bords // définir des encarts pour la cellule

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

Swift 3.

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

    if DEVICE_IDIOM == .pad {
        return 15.0
    }
    else {
        return 10.0
    }
}
3
MAhipal Singh

J'ai eu le même problème..

Dans mon cas, j'avais besoin d'une cellule rétangulaire.

Pour obtenir le résultat souhaité, j'ai utilisé le ICollectionViewDelegateFlowLayout.

Ceci est ma mise en œuvre de l'une des méthodes:

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

CA marchait bien pour moi! J'espère que ça aide quelqu'un.

2
Felipe Braz

Swift 4.2

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
   return 10
}

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

 return 10
}
0
Lakhdeep Singh