gpt4 book ai didi

ios - UIcollectionView scrollToitemAtIndexPath 不适用于不可见的单元格

转载 作者:可可西里 更新时间:2023-11-01 00:36:30 28 4
gpt4 key购买 nike

我是 iOS 和 Swift 的新手。

已设法创建一个带有自定义 LayoutAttributes 和可重用自定义单元格的 UICollectionView,该单元格计算图像的高度。这一切都很棒。工作正常,我可以手动滚动。一切都好。

问题是我想以编程方式滚动到第 N 个 indexPath,但 scrollToItemAtIndexPath 似乎只适用于可见的。

所以我必须在 iphone 5S 上显示 9 张图像的 2 列图像。图片总数为31张。

因此,使用 collectionView 的 ScrollToItemAtIndexPath 可以工作到第 9 个项目。

但是,当我尝试以编程方式进一步滚动时,比如 12th,它不起作用。奇怪的是,如果手动滚动,然后调用代码,它就可以工作。所以我调试了一下,发现只有前 9 个单元格是用高度计算的。那会是问题吗?如果是这样,我怎样才能让它发挥作用?

已尝试使用 didLayoutSubviews 和其他建议,但没有奏效。

目前,我正在使用 didSelectItemAtIndexPath collectionView 函数以编程方式滚动。

编辑:

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let item = self.collectionView(self.collectionView!, numberOfItemsInSection: 0) - 1
let lastItemIndex = NSIndexPath(forItem: item, inSection: 0)
self.collectionView?.scrollToItemAtIndexPath(lastItemIndex, atScrollPosition: UICollectionViewScrollPosition.CenteredVertically, animated: true)
}

即使我对索引路径的编号进行硬编码(例如 12),它仍然无法工作。如果需要更多信息,请告诉我。

我是不是漏掉了什么?

非常感谢。

最佳答案

您应该在 viewDidAppear 中调用方法 scrollToItemAtIndexPath,这样,cellForItemAtIndexPath 就已经被调用了。

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)

collectionView.scrollToItemAtIndexPath(NSIndexPath(forRow: index, inSection: 0), atScrollPosition: .CenteredVertically, animated: false)

}

关于ios - UIcollectionView scrollToitemAtIndexPath 不适用于不可见的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883813/

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