如何在ios中的scrollViewDidScroll下设置图像更改动画

如何在ios中的scrollViewDidScroll下设置图像更改动画,ios,swift,uiscrollview,Ios,Swift,Uiscrollview,我在我的项目中有一个水平的CollectionView,其中通过CollectionViewmyImageView的中心索引,图像在scrollviewdidcoll上发生变化。因此,我尝试对图像更改执行转换效果。但它不起作用可能是因为没有足够的延迟。那么,我们需要做些什么呢?这是我的代码: UIView.transition(with: self.votingimageView, duration: 0.3, options: .transitionCrossDissolve, animati

我在我的项目中有一个水平的
CollectionView
,其中通过
CollectionView
my
ImageView
的中心索引,图像在
scrollviewdidcoll
上发生变化。因此,我尝试对图像更改执行转换效果。但它不起作用可能是因为没有足够的延迟。那么,我们需要做些什么呢?这是我的代码:

UIView.transition(with: self.votingimageView, duration: 0.3, options: .transitionCrossDissolve, animations: {

                    self.votingimageView.image = self.imageArray[self.findCenterIndex()]


            }, completion: nil)

我曾尝试将其添加到动画工作的
ScrollViewDiEndDraging
ScrollViewDiEndDecelling
位置,但我想在每次索引更改时都更改图像,但这不起作用!例如,如果我想从1变为10,我希望我的imageview图像在每次索引更改时都会更改。

我认为你的问题有两个解决方案

首次在
cellForRows
func中设置动画每次重复使用单元格时,每次调用func
cellForRows时仅显示一次动画

第二个为您的collectionView创建页面,如下所示

var page: Int { 
    didSet {
        //update cell's animation when really page was changed
        if page != oldValue {
            //call animation for page 1~10 (your example)
        }
    }
}
并在
scrollVidDidScroll

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    page = Int(round(Double(scrollView.contentOffset.x) / Double(scrollView.bounds.size.width)))
}
如果将collectionView索引0滚动到10


页面更改为0,1,2,3,4。。。一旦动画出现,每页调用9,10

我不明白你的第二点!你能解释一下吗。除此之外,我已经在scrollVidDidScroll下调用了我的动画代码