1.造成有缝隙的主要原因是一行cell的个数不能被CollectionView的宽整除。
Simulator Screen Shot - iPhone 8 - 2020-07-29 at 11.36.36.png
如图红色是 CollectionView的背景颜色,能明显看出cell之间有缝隙。
既然知道是不能被整除造成的,那么我们就想办法让它能整除。
iphone8屏幕的宽是375除以4除不尽,那我们加上多少能被整除呢?
比如3÷2=1…1,要想 3加上x后的值能整除2的最小值,那就是3加上余数即可。
同理大于屏幕宽并且能整除4的最小值是:375 + 375%4,能得到这个宽,由于我们需要把视图放在屏幕居中的位置,x值就是 ((375 + 375%4) - 375)/2,每个cell的宽是(375 + 375%4)/4,说了那么多我们上代码。
let difference = Int(k_screen_width)%4 // 最小差值
let maxWidth = CGFloat(difference) + k_screen_width // 大于屏幕最接近屏幕能除尽4的宽
let cellWidth = maxWidth/4 // 每个cell的宽
let viewX = (k_screen_width - maxWidth)/2 // UICollectionView 的x值
let layout = UICollectionViewFlowLayout()
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
layout.headerReferenceSize = CGSize(width: k_screen_width, height: 40)
layout.itemSize = CGSize(width: cellWidth, height: cellWidth)
let rect = CGRect(x: viewX, y: 0, width: maxWidth, height: k_view_height_t)
let view = UICollectionView(frame: rect, collectionViewLayout: layout)
调整后我们上个效果图
Simulator Screen Shot - iPhone 8 - 2020-07-29 at 12.38.36.png
完美解决。
网友评论