gpt4 book ai didi

swift3 - 如何快速计算 uicollectionview 的行数

转载 作者:行者123 更新时间:2023-12-02 20:43:33 44 4
gpt4 key购买 nike

我需要确定 uicollectionview 的高度。

let layout = contactCollectionView.collectionViewLayout
let heightSize = String(Int(layout.collectionViewContentSize.height))

上述解决方案适用于我项目中的某些情况。在这种特定情况下,我需要计算行数,然后将其与一个数字相乘以找到高度。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// height = (count rows) * 30 . every cell height is 30
// every cell has different width.
return (presenter?.selectedContact.count)!
}

如何查找行数?

更新

看图片。 enter image description here

这是我的收藏 View 。每个单元格都有不同的宽度(因为它是字符串)。所以它有不同的行。这个collectionView的宽度是view.frame的宽度

最佳答案

您可以比较collectionView宽度是否大于之前的总宽度,然后将rowCounts增加1。我假设您正在实现 UICollectionViewDelegateFlowLayout 方法,并且您目前知道每个单元格的动态宽度。如果您当时不知道宽度,您还可以计算 stringwidth,这需要考虑 UIfont 以及其他每个单元格中都有东西。

这里是如何计算字符串宽度的引用https://stackoverflow.com/a/30450559/6106583

类似下面的内容

//stored properties 
var totalWidthPerRow = CGFloat(0)
var rowCounts = 0
let spaceBetweenCell = CGFloat(10) // whatever the space between each cell is


func collectionView(_collectionView:UICollectionView, layoutcollectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

let collectionViewWidth = view.frame.width
let dynamicCellWidth = //whatever you calculate the width
totalWidthPerRow += dynamicCellWidth + spaceBetweenCell


if (totalWidthPerRow > collectionViewWidth) {
rowCounts += 1
totalWidthPerRow = dynamicCellWidth + spaceBetweenCell
}

return CGSizeMake(dynamicCellWidth , CGFloat(30))
}


关于swift3 - 如何快速计算 uicollectionview 的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299992/

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