UICollectionView 中 80% 屏幕和 20% 屏幕的计算
Calculations of the 80% of screen and 20% in UICollectionView
我编写了 return 单元格大小为 UICollectionView
的函数。
fileprivate func getCellSize(with row: Int) -> CGSize {
let percentage: CGFloat = row == 0 ? 0.8 : 0.2
let width = self.collectionView?.frame.width
let height = self.collectionView?.frame.height
let expectedWidth = width! * percentage
let expectedHeight = height! * 0.5
return CGSize(width: expectedWidth, height: expectedHeight)
}
这个函数工作正常,但它有一个小问题,与我认为的四舍五入有关。因为我收到的布局没有像预期的那样完全被单元格覆盖。
iPhone 6 模拟器的函数结果如下:
0: ROW = (533.60000000000002,187.5)
1: ROW = (133.40000000000001,187.5)
实际结果:
预期结果:
怎么样
if let frameWidth = self.collectionView?.frame.width {
let row0Width = Int(Double(frameWidth) * 0.8)
let otherWidth = frameWidth - row0Width
let expectedWidth = row == 0 ? row0Width : otherWidth
// ...
}
避免舍入问题?
我编写了 return 单元格大小为 UICollectionView
的函数。
fileprivate func getCellSize(with row: Int) -> CGSize {
let percentage: CGFloat = row == 0 ? 0.8 : 0.2
let width = self.collectionView?.frame.width
let height = self.collectionView?.frame.height
let expectedWidth = width! * percentage
let expectedHeight = height! * 0.5
return CGSize(width: expectedWidth, height: expectedHeight)
}
这个函数工作正常,但它有一个小问题,与我认为的四舍五入有关。因为我收到的布局没有像预期的那样完全被单元格覆盖。
iPhone 6 模拟器的函数结果如下:
0: ROW = (533.60000000000002,187.5)
1: ROW = (133.40000000000001,187.5)
实际结果:
预期结果:
怎么样
if let frameWidth = self.collectionView?.frame.width {
let row0Width = Int(Double(frameWidth) * 0.8)
let otherWidth = frameWidth - row0Width
let expectedWidth = row == 0 ? row0Width : otherWidth
// ...
}
避免舍入问题?