gpt4 book ai didi

ios - 尽管宽度相等,但 Collection View 网格最后一行显示不同 - swift iOS

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:38 24 4
gpt4 key购买 nike

我有一个固定的 Collection View 单元格 (UICollectionView) 网格,但底部行中的单元格在屏幕上总是以略小的宽度显示。 collectionViewLayout: UICollectionViewLayout sizeForItemAt 中使用的框架大小(或边界)和计算宽度对于所有行都是相同的。

enter image description here

        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
let settings = currentContents[indexPath.item]
let height = CGFloat(30)

// https://stackoverflow.com/questions/54915227/uicollectionview-remove-space-between-cells-with-7-items-per-row
var cellWidth = CGFloat()
let availableWidth = collectionView.bounds.size.width
print("available width", availableWidth)
let minimumWidth = floor(availableWidth / collectionContents.cellsPerRow5)
print("minmum width", minimumWidth)
cellWidth = minimumWidth * settings.portion - 1
print("cell width", cellWidth)

return CGSize(width: cellWidth, height: height)
}

enter image description here

我想让底行与其他行对齐,但无法想象在布局委托(delegate)方法中返回值后改变宽度的情况(或如何修复)。

最佳答案

UIKit 不喜欢超过 2 位小数的值,将它们四舍五入或者它会为你做。

在这里,UICollectionViewFlowLayout 四舍五入您的单元格大小并开始使用至少等于您指定的 minimumInteritemSpacing 的“interitemspacing”填充行。在最后一行,它恰好使用了 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)
)
}
}

改变:

return CGSize(width: cellWidth, height: height)

return CGSize(width: cellWidth, height: height).xx_rounded()

关于ios - 尽管宽度相等,但 Collection View 网格最后一行显示不同 - swift iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56035879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com