web-dev-qa-db-ja.com

UICollectionView-セル間の距離?

セル幅67のUICollectionViewを使用していますが、現在はフローレイアウトを使用しています。

セル間に30ピクセルのスペースがある3つのセルが連続しています。どうすればその距離を短くして、4つのセルを一列に収めることができますか?この方法には何か関係がありますか?

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

このUICollectionViewFlowLayoutDelegateメソッドが役立ちます。

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

セルを配置するためにより多くのスペースが必要な場合は、edgeInsetsも調整します

43
Anil Varghese

次のプロパティを使用して、セルまたは行の間隔を構成できます。
1)行間のスペースを設定します。

[self.collectionView setMinimumLineSpacing:5];

2)アイテム/セル間のスペースを設定します。

[self.collectionView setMinimumInteritemSpacing:5];

InterfaceBuilder(IB)から構成することもできます。ストーリーボード/ XibファイルからUICollectionViewを選択し、下の画像で指定されているSize Inspectorをクリックするだけです。 enter image description here

20
Aamir

this から。 minimumInteritemSpacingおよび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

いいえ、そうではありません。レイアウトのminimumInteritemSpacingを変更するだけです。

9
matt

次のようなデリゲートメソッドを使用できます。セクション内のセル間のスペースを変更するため。

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

異なるセクションのセル間の上下のパディングを表示します。

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

//レイアウト:エッジを設定//セルのインセットを設定

- (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

同じ問題がありました。

私の場合、長方形のセルが必要でした。

目的の結果を得るには、ICollectionViewDelegateFlowLayoutを使用しました。

これは、メソッドの1つの私の実装です。

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

これは私のためにうまくいきました!私はそれが誰かを助けることを願っています。

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