2017-04-21 3 views
-1

各セルのテキスト量に応じて異なるサイズのセルで水平UICollectionViewを作成しようとしています。私は以下のコードでこれを達成することができましたが、今では自分のセル間に余分なスペースができています。私のminimumLineSpacingForSectionAtはすでに0を返しています。私は負の数値を返そうとしましたが、どちらもうまくいきません。誰かが余分なスペースが起こっている理由とそれを取り除く方法を知っていますか?UICollectionViewサイズの変数を使用してCGSizeを返すと、セル間に不必要な余分なスペースが発生する

ちょうど参考のために、私のセルの中には、セルの完全な大きさに制約された1つのUILabelがあります。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

    var stringWidth: CGFloat = 100 
    //Finding and setting feedMenuCellWidth 
    if let groupName = groups[indexPath.item].name { 
     var originalString: String = groupName 
     let myString: NSString = originalString as NSString 
     let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 17.0)]) 
     stringWidth = size.width 
    } 
    //Returning CGSize 
    return CGSize(width: stringWidth + 20, height: frame.height) // with standard width 
} 


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

答えて

0

最小interitem間隔がちょうど、というその最小値であるが、余分なスペースがある場合、UICollectionViewFlowLayoutは、アイテムの間に分配します。 UICollectionViewFlowLayoutであるコレクションビューに付属するデフォルトのUICollectionViewLayoutを使用するのではなく、具体的なインスタンスをUICollectionViewLayoutにする必要があります。さらに、UICollectionViewFlowLayoutのような要素間で分散する代わりに、余分なスペースをすべて左または右に割り当てることができますそうです。