【发布时间】:2015-04-04 00:45:13
【问题描述】:
我设置了一个带有 FlowLayout 的 UICollectionView,它在垂直或水平方向的单元格之间不留空间。
我一切正常,但第 2 列和第 3 列之间有一个奇怪的 1px 空间,我不知道为什么!?我已经验证了 iOS 模拟器和真实设备上都出现了 1px 的差距。有人经历过吗?
我的 UIViewController 是以下的委托/数据源:
class MyViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
我已经实现了删除任何间距的必要功能(并通过它们正在运行的打印语句进行验证),以及对彼此相邻排列的单元格的视觉确认:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsetsZero
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
最后,我打印出要返回的单元格的宽度(每个颜色方块),以验证它是(view.frame.width / 3) 或(320/3),即106.666667
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var totalHeight: CGFloat = (self.view.frame.width / 3)
var totalWidth: CGFloat = (self.view.frame.width / 3)
println(totalWidth) // this prints 106.666666667
return CGSizeMake(totalWidth, totalHeight)
}
【问题讨论】:
-
您是否找到了比以下解决方案更好的解决方案?
-
@BlueBoy 我没有。我采用的解决方案是将其中两列设为(宽度/3)的天花板或地板,然后将第三列设置为余数。
-
如何将其中的两列设为 ceil?
标签: ios swift uicollectionview uicollectionviewcell