如何检查资产中的UIImage是否已满载

时间:2015-12-30 20:31:22

标签: ios swift animation uiimage uiviewanimationtransition

在一个视图控制器中,我有两个相互叠加的图像视图和两个标记为上一个和下一个的按钮。

我有一个UIImage s

数组
let images = [UIImage(named: "1"), UIImage(named: "2"), UIImage(named: "3")]

我有这个辅助方法通过淡入淡出过渡到下一个图像

func changeImage(image: UIImage){
self.topImageView.alpha = 0 //This is to initially make the next image to fade in
self.topImageView.image = image
UIView.animateWithDuration(0.5, animations: { () -> Void in 
self.topImageView.alpha = 1.0  //this will fade in the next image
}) { (Bool) -> Void in
    self.bottomImageView.image = image //Previous image will be replaced with the now current image after fade
    }
}

我在prev和next按钮上附加了这个辅助方法,以循环显示图像

现在的问题是每当我点击按钮时,淡入淡出动画都不起作用,只是简单地将图像加载到bottomImageView上。但是当我点击之前的时候,淡入淡出就会起作用。

我相信这样做的原因是因为下一张图片仍然是第一次加载,然后当试图回到它时,淡入淡出最终会起作用。

那么如何预先加载图像以使淡入淡出的动画起作用呢?

1 个答案:

答案 0 :(得分:4)

我建议远离两个覆盖的UIImageView并简单地使用一个。然后,您可以使用以下代码更改动画图像:

UIView.transitionWithView(self.topImageView, duration: 0.5, options: [.TransitionCrossDissolve], animations: { () -> Void in
    self.topImageView.image = image
    }) { completed in
        print("transition finished")
}

两个imageView仅引入不需要的问题(正如您的问题清楚地显示)。而且一种观点更简洁。

关于你的代码为什么不按预期工作的理论:我没有听说过图像加载需要花费任何明显的时间 - 必须有其他错误。例如,您的topImageView 真的 位于另一个视图之上?