UIKit
不喜欢超过 2 位小数的值,请将其四舍五入,否则它会为您完成。
Here, UICollectionViewFlowLayout
对单元格大小进行四舍五入,并开始使用至少等于minimumInteritemSpacing
你指定的。在最后一行,它完全使用了minimumInteritemSpacing
值并且没有完全填满该行。
使用更好的舍入值修复它,给人一种一切都完美对齐的错觉。
我通常使用这些扩展:
extension CGFloat {
func xx_rounded(_ rule: FloatingPointRoundingRule = .down, toDecimals decimals: Int = 2) -> CGFloat {
let multiplier = CGFloat(pow(10.0, CGFloat(decimals)))
return (self * multiplier).rounded(.down) / multiplier
}
}
extension CGSize {
func xx_rounded(rule: FloatingPointRoundingRule = .down, toDecimals: Int = 2) -> CGSize {
return CGSize(
width: width.xx_rounded(rule, toDecimals: toDecimals),
height: height.xx_rounded(rule, toDecimals: toDecimals)
)
}
}
Change:
return CGSize(width: cellWidth, height: height)
to
return CGSize(width: cellWidth, height: height).xx_rounded()