【发布时间】:2018-01-12 20:10:46
【问题描述】:
我正在尝试创建一个自动滚动的 UICollectionView(每个单元格都有一个图像和一个字符串)。滚动使用contentOffset 可以正常工作,但由于cellForItem 从未触发过,因此永远不会加载新的/不可见的单元格。我不想使用scrollToItem...contentOffset 允许慢速滚动效果。我也不能使用任何需要持续时间的东西,因为我希望它一直运行到用户更改视图为止。这是我正在使用的代码:
func configAutoScrollTimer() {
signInTimer = Timer.scheduledTimer(timeInterval: 0.03, target: self, selector: #selector(autoScrollView), userInfo: nil, repeats: true)
}
func deconfigAutoScrollTimer() {
signInTimer.invalidate()
scrollX = 0
}
@objc func autoScrollView() {
scrollX += 1
let offsetPoint = CGPoint(x: scrollX, y: 0)
collectionView.contentOffset = offsetPoint
collectionView.layoutIfNeeded()
}
configureAutoSrollTimer() 在视图加载时被调用。关于如何加载不可见单元格的任何想法?
【问题讨论】:
-
这段代码在我的测试项目中运行良好。您未在此处显示的代码中肯定还有其他内容。也许在集合视图或它的单元格的设置中。当您说 UI 加载时未加载屏幕外的单元格时,您是什么意思?您是指在滚动开始之前首次显示集合视图的时间吗?
-
他的意思是带偏移量的自动滚动不会触发 cellForRow 所以没有新的单元格显示
-
好的,谢谢。我应该在正文中重申这一点。编辑问题以澄清
-
你确定你有足够的内容吗?由于您正在增加内容偏移量,因此即使您没有要加载的单元格,它也会继续滚动。
-
是的,我还有很多内容。
标签: swift uicollectionview tvos