Ios 如何检查资产中的UIImage是否已完全加载

Ios 如何检查资产中的UIImage是否已完全加载,ios,swift,animation,uiimage,uiviewanimationtransition,Ios,Swift,Animation,Uiimage,Uiviewanimationtransition,在viewcontroller中,我有两个相互重叠的图像视图和两个标记为“上一个”和“下一个”的按钮 我有一个UIImages数组 let images = [UIImage(named: "1"), UIImage(named: "2"), UIImage(named: "3")] 我有这个助手方法通过淡入淡出过渡到下一个图像 func changeImage(image: UIImage){ self.topImageView.alpha = 0 //This is to initiall

在viewcontroller中,我有两个相互重叠的图像视图和两个标记为“上一个”和“下一个”的按钮

我有一个
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上。但当我点击“上一个”时,淡入淡出的效果会很好

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


那么,如何预先加载图像以使淡入淡出动画正常工作?

我建议不要使用两个重叠的
UIImageView
s,而只使用一个。然后,可以使用以下代码更改动画图像:

UIView.transitionWithView(self.topImageView, duration: 0.5, options: [.TransitionCrossDissolve], animations: { () -> Void in
    self.topImageView.image = image
    }) { completed in
        print("transition finished")
}
两个图像视图只会引入不需要的问题(正如您的问题清楚地显示的那样)。有一种观点简单得多


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

谢谢!知道了。由于某种原因,我发现iPhone4S中存在此漏洞,但在5和更新版本上,这并没有显示我遇到的问题。