【发布时间】:2017-03-28 04:03:10
【问题描述】:
我目前创建了一组图像 [1 - 8]。我还创建了一个集合视图,它从 imageArray 中提取图像并将图像放入单元格中的 imageview 中。请注意,该单元格中有一个 imageView,它占据了整个屏幕,水平滚动和分页都启用了。
现在我拥有的当前代码非常奇怪,目前正在发生什么,所以我会告诉你目前正在发生什么。那么当前正在发生什么(我将通过图像 1 索引 0)如果图像在 2(索引 1)上,然后您在 3(索引 2)旁边滑动,它会跳过图像 3(索引 2)和 4(索引 3) 并位于图像 5(索引 4)上,所以当我的意思是跳过时,我的意思是它滑过你刚刚滑动到的图像,然后再滑过一个。
(奇怪的是它在 5 上删除了图像 1 和 2)。我相信这是因为它正在更新索引或将其再次设置为 2,因为它刚刚删除了 0。我知道这可能很难得到但是只需考虑带有分页的滚动视图,当您滑动到第三张图像时,它会跳过您打开的一张和另一张,然后将您滑动到它所在位置的图像 5。
到目前为止,感谢你们中的一些人,我在下面想出了这段代码,但我希望有人能够解决这个可怕的混乱。
var currentImage = 0
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let x = floor(myCollectionView.contentOffset.x / view.frame.width)
if Int(x) != currentImage {
currentImage = Int(x)
}
if currentImage > 1 {
for collectionCell in myCollectionView.visibleCells as [UICollectionViewCell] {
let visibleCells = myCollectionView.visibleCells
if visibleCells.first != nil {
if let indexPath = myCollectionView.indexPath(for: collectionCell as UICollectionViewCell) {
let indexPathOfLastItem = (indexPath.item) - 1
let indexPathOfItemToDelete = IndexPath(item: (indexPathOfLastItem), section: 0)
imageArray.remove(at: (indexPath.item) - 1)
myCollectionView.deleteItems(at: [indexPathOfItemToDelete])
}
}
}
}
}
【问题讨论】:
-
显示一些视频或用户滚动时需要执行的操作
-
好的,请稍等。
-
请问,你为什么要删除最后一张图片?
-
解释一下你需要实现更多一点的东西......当滚动停止或持续滚动时你需要删除单元格吗?
-
嗯,我只是在滚动停止时删除单元格。至少我想做的事