我正尝试在两张UIWindow
张图片之间转换动画(使用backgroundColor
设置UIColor
patternImage
。
我有两张图片myImage1
和myImage2
。我使用函数UIWindow
更改backgroundColor
changeImage1()
,然后再使用函数changeImage2()
。我还设置了view.backgroundColor = UIColor.clearColor()
,以便我可以看到UIWindow
上发生了什么。代码如下。
测试A:
当我将window.backgroundColor = UIColor.redColor()
更改为window.backgroundColor = UIColor.blueColor()
时,我会在UIWindow
之间获得一个很好的过渡,颜色为红色到蓝色。 (见代码A。)
测试B:
但是,当我设置模式图片window.backgroundColor = UIColor(patternImage:...)
并调用changeImage1()
时,myImage1
会很好地设置动画,但是当我调用changeImage2()
时没有动画时,{{1} }突然取代myImage2
。 (见代码B。)
问题:
1 - 如何在myImage1
和myImage1
之间的UIWindow上转换动画?
2 - 我的代码中缺少什么只是交换图像而不是动画,为什么myImage2
动画但myImage1
不是?
3 - 是否有其他方法可以在不使用UIColor的myImage2
上设置两个图像/交叉溶解(patternImage:...)?
代码:
A:
UIWindow
B:
func changeImage1() {
self.view.backgroundColor = UIColor.clearColor() //show UIWindow
UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
if let window = UIApplication.sharedApplication().windows.first as UIWindow! {
window.backgroundColor = UIColor.redColor() //Animation OK
}
}, completion: nil)
}
func changeImage2() {
UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
if let window = UIApplication.sharedApplication().windows.first as UIWindow! {
window.backgroundColor = UIColor.blueColor() //Animation OK
}
}, completion: nil)
}
答案 0 :(得分:1)
动画意味着存在一系列中间状态。在两个图案图像之间没有可理解的中间状态的概念;因此,该动画(从一个模式图像到另一个模式图像)失败。
解决方法可能是为颜色设置动画,然后在其完成处理程序中,从颜色到下一个图案图像。但即使这样也可能失败;实际上,我很惊讶地听到你的动画从一个颜色到一个模式图像首先起作用。