2017-10-02 3 views
-1

collectionViewは、間隔を除いて問題のないセルを表示します。一部の間隔は他の間隔と同じではなく、他の間隔より少し大きいです。 margin = 0と設定しても、いくらかのスペースが残っています。なぜcollectionViewでスペーシングが等しくないのですか?

let margin = 1 
let cellSize = (size.width-margin*(cellsPerRow+1))/cellsPerRow 
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() 
layout.sectionInset = UIEdgeInsets(top: margin, left: margin, bottom: margin, right: margin) 
layout.itemSize = CGSize(width: cellSize, height: cellSize) 
layout.minimumInteritemSpacing = margin 
layout.minimumLineSpacing = margin 

enter image description here

ありがとう:ここ

はコードがあります。

+0

分割を実行しています: 'let cellSize =(size.width-margin *(cellsPerRow + 1))/ cellsPerRow'。部門が均等になっていないとどうなるでしょうか?非整数のポイントを持つことはできません。 – matt

+0

私はあなたの算術が間違っているように見える、あなたは括弧を調整する必要があります。 let cellSize =((size.width-margin)*(cellsPerRow + 1))/ cellsPerRow – arvidurs

+0

@matt cellsPerRowは操作の前にCGFloatに変換されます。 – jdleung

答えて

1

セルのサイズは、領域全体にフィットする最大(整数)の幅/高さに基づいて定義し、「leftover」(= area_width_or_height - (cell_size * cell_amount))を2つに分けてグリッドを均一にするために左/右/上/下に残す必要があるマージンのサイズ。今度は、あなたがより低いまたはより高い数に丸めるかどうかに基づいて、あなたの細胞をわずかにランダムにします。

関連する問題