2017-04-08 14 views
0

現在、UICollectionViewでセルを作成するたびに、各セル間に一定の垂直方向の間隔があります。私は細胞間のこの間隔を取り除きたい。同様の質問とドキュメンテーションを調べると、この間隔はインスタンスプロパティから発生することがわかりました。 minimumInterItemSpacing、そしてどうやら私が実装しようとする試みをした プログラム間で最大項目間の間隔を設定する(swift 3.0)

collection​View(_:​layout:​minimum​Interitem​Spacing​For​Section​At:​) 

を使用して2つのこの値を変更することについて移動する方法、

があるそれのためのデフォルト値は10であることを...

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

    return 0 
} 

また、

は、Interitem Spacingの最小限のプロパティを直接設定します。

使用して...

var minimumInteritemSpacing: CGFloat { get set } 

たぶん私は間違ってそれらを実装していますが、間隔がそれでも。 注目すべき情報として、私はswift 3.0を使用しています。クラスはUICollectionViewControllerおよびUICollectionViewDelegateFlowLayoutとしてサブクラス化されています。

提案がありますか?

答えて

0

あなたがUICollectionViewControllerのサブクラスをインスタンス化するとき、あなたはそれを行うことができ、プログラムでそれをやって:

let layout = UICollectionViewFlowLayout() 
layout.minimumLineSpacing = 0 

let collectionViewController = MyCollectionViewController(collectionViewLayout: layout)) 

クラスがUICollectionViewControllerのサブクラスではない場合、あなたはあなた自身のcollectionView(することを忘れないでくださいを作成することができます)UICollectionViewDelegateUICollectionViewDataSourceプロトコルを実装する:

lazy var collectionView: UICollectionView = { 
    let layout = UICollectionViewFlowLayout() 
    layout.minimumLineSpacing = 0 

    let uicv = UICollectionView(frame: self.view.frame, collectionViewLayout: layout) 
    uicv.delegate = self 
    uicv.dataSource = self 
    uicv.backgroundColor = .white 

    return uicv 
}() 

UPDATE

あなたがUICollectionViewControllerのサブクラスを使用している場合、あなたはviewDidLoad()方法でこれを実装できることを成し遂げる行う別の方法があります:

let layout = collectionView?.collectionViewLayou as! UICollectionViewFlowLayout 
layout.minimumLineSpacing = 0 
+0

は、私のクラスは、型UICollectionViewControllerのクラスですが、私はまだですそれを実装する際に問題があります。私は、プロパティの初期化子内でインスタンスメンバー 'layout'を使用できないというエラーを受け取ります。プロパティの初期化子が 'self'の前に実行される – Stefan

+0

2番目の方法をさらに説明できますか? – Stefan

+0

@Stefan私はあなたが望むことを達成する別の方法で私の答えを更新しました。 –

関連する問題