2017-10-02 23 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

전체 면적에 맞는 최대 (정수) 너비/높이를 기준으로 셀 크기를 정의한 다음 "나머지"(= area_width_or_height - (cell_size * cell_amount))를 취하여 두 그리드를 균일하게 만들려면 왼쪽/오른쪽/위/아래로 두어야 할 여백의 크기. 이제 더 낮은 수로 돌릴 지 아니면 더 높은 수로 반올림하는지에 따라 셀을 약간 랜덤하게 만듭니다.