【发布时间】:2015-08-16 15:18:22
【问题描述】:
我有一个 UICollectionView 填充了不同数量的单元格。 单元应尽可能完美地使用可用空间。为此,我计算每个单元格的可用空间。
应该在视图初始化时计算可用空间。每个单元格与所有内容的间距为 2pt。目前我用 64pt 硬编码导航栏和状态栏的空间,这不是未来的证明。
使用下面的代码,一切都在模拟器中运行,但在真实硬件 (iPhone5s) 上却没有:在我的物理 iPhone 上,高度计算不正确,最后一行和集合视图底部之间出现大约 30pt 的间隙.
知道如何改进代码吗?
private func computeCellSizes(var size :CGSize){
if(size == CGSizeZero){
size = self.collectionView!.frame.size
}
self.numberOfRows = Int(size.width / 103)
//spacing of 2 points between each cell
let availableWidth = size.width - CGFloat((self.numberOfRows + 1) * 2)
let cellWidth = availableWidth / CGFloat(numberOfRows)
self.numberOfColumns = Int(size.height / (cellWidth * 1.3))
//spacing of 2 points between each cell, minus navigationcontroller height
let availableHeight = size.height - CGFloat((numberOfColumns + 1) * 2) - 64
let cellHeight = availableHeight / CGFloat(numberOfColumns)
let cellSize = CGSizeMake(cellWidth, cellHeight)
self.cachedSizes.setObject(NSValue(CGSize: cellSize), forKey: size.width)
}
【问题讨论】:
-
在寻求代码方面的帮助时,请说明如何你所得到的东西是失败的。 如何您的代码在“真实硬件”上失败?
-
感谢您的评论 - 我添加了这个。
标签: ios uicollectionview