1

我正在尝试使用从左到右滑动的三个图像来为我的图像视图设置动画。我编写了以下代码来做到这一点。但是,setCompletionBlock即使视图控制器消失,也会被调用。所以它会导致我以前的视图控制器出现奇怪的问题。如何在viewDidDisappear()其他地方或任何地方禁用它?

func animateImageView() {
    CATransaction.begin()
    CATransaction.setAnimationDuration(OnboardAnimationConstants.animationDelayOnDidAppear)
    CATransaction.setCompletionBlock {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                self.animateImageView()
        }
    }
    transition.type = .push
    transition.subtype = .fromRight
    imageView.layer.add(transition, forKey: kCATransition)

    if images.count != 0 {
        imageView.image = images[index]
    }

    CATransaction.commit()
    index = index < images.count - 1 ? index + 1 : 0
}
4

0 回答 0