如何检查资产中的 UIImage 是否已完全加载
How to check if UIImage from assets is fully loaded
在 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
}
}
我将这个辅助方法附加到上一个和下一个按钮上以循环浏览图像
现在的问题是每当我点击按钮时,淡入淡出动画不起作用,只是简单地将图像加载到 bottomImageView 上。但是当我点击上一个时,淡入淡出。
我相信它这样做的原因是因为下一张图片仍在第一次加载,然后当试图返回它时,淡入淡出最终会起作用。
那么如何预先加载图像以便淡入淡出动画起作用?
我建议不要使用两个重叠的 UIImageView
,而只使用一个。然后你可以使用下面的代码来改变图像动画:
UIView.transitionWithView(self.topImageView, duration: 0.5, options: [.TransitionCrossDissolve], animations: { () -> Void in
self.topImageView.image = image
}) { completed in
print("transition finished")
}
两个 imageView 只会引入不需要的问题(正如您的问题清楚表明的那样)。一个视图简单得多。
关于您关于为什么您的代码无法按预期工作的理论:我没有听说图像加载会花费任何明显的时间 - 一定有其他问题。例如,您的topImageView
真的在另一个视图之上吗?
在 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
}
}
我将这个辅助方法附加到上一个和下一个按钮上以循环浏览图像
现在的问题是每当我点击按钮时,淡入淡出动画不起作用,只是简单地将图像加载到 bottomImageView 上。但是当我点击上一个时,淡入淡出。
我相信它这样做的原因是因为下一张图片仍在第一次加载,然后当试图返回它时,淡入淡出最终会起作用。
那么如何预先加载图像以便淡入淡出动画起作用?
我建议不要使用两个重叠的 UIImageView
,而只使用一个。然后你可以使用下面的代码来改变图像动画:
UIView.transitionWithView(self.topImageView, duration: 0.5, options: [.TransitionCrossDissolve], animations: { () -> Void in
self.topImageView.image = image
}) { completed in
print("transition finished")
}
两个 imageView 只会引入不需要的问题(正如您的问题清楚表明的那样)。一个视图简单得多。
关于您关于为什么您的代码无法按预期工作的理论:我没有听说图像加载会花费任何明显的时间 - 一定有其他问题。例如,您的topImageView
真的在另一个视图之上吗?