gpt4 book ai didi

ios - Swift - 如何根据整数中的索引位置从 UICollectionView 获取 UICollectionViewCell

转载 作者:行者123 更新时间:2023-11-28 12:15:46 26 4
gpt4 key购买 nike

我正在获取数据索引作为 int。我正在获取我的数据的位置,可以是 1 或 2 或 3 或 4 .. 等等。我如何使用这些 int 从 collectionview 中获取 colletionviewcell。

在每次滚动时,我都会获取单元格索引作为 int,例如,最初它将是 0,对于下一次滑动,数字将为 1,下一次滑动次数将为 2,依此类推。

    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
let cellWidthIncludingSpacing = layout.itemSize.width + layout.minimumLineSpacing
var offset = targetContentOffset.pointee
let index = (offset.x + scrollView.contentInset.left) / cellWidthIncludingSpacing
let roundIndex = round(index)
offset = CGPoint(x: roundIndex * cellWidthIncludingSpacing - scrollView.contentInset.left, y: -scrollView.contentInset.top)
targetContentOffset.pointee = offset

for cell in collectionView.visibleCells as! [CaurosalCollectionViewCell] {
// do something

print(cell.title.text)
}
}

expected output

最佳答案

您可以使用 yourCollectionView?.indexPathsForVisibleItems 但它会返回一个数组。因此,您必须计算在当前 contentOffset 中哪个 indexPath 可见。

类似于:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let visibleRect = CGRect(origin: yourCollectionView.contentOffset, size: yourCollectionView.bounds.size)
let visiblePoint = CGPoint(x: CGFloat(visibleRect.midX), y: CGFloat(visibleRect.midY))
let visibleIndexPath: IndexPath? = yourCollectionView.indexPathForItem(at: visiblePoint)
}

编辑

您需要查看 UICollectionViewLayout,特别是 layoutAttributesForItem(at indexPath: IndexPath)。您可以根据当前的 IndexPath 更新布局,而无需通过 ScrollView 委托(delegate)。

如果您想使用 scollview 委托(delegate),我相信这个问题在这里得到了更好的回答:How to create a centered UICollectionView like in Spotify's Player

关于ios - Swift - 如何根据整数中的索引位置从 UICollectionView 获取 UICollectionViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689613/

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