我有一个自定义的UIView,我想要动画地改变它的backgroundColor
属性。这是UIView
的一个可动画属性。
下面是代码:
class ETTimerUIView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
// other methods
func flashBg() {
UIView.animateWithDuration( 1.0, animations: {
self.backgroundColor = UIColor.colorYellow()
})
}
override func drawRect() {
// Something related to a timer I'm rendering
}
这段代码会导致动画立即跳过并改变颜色:
self.backgroundColor = UIColor.colorYellow() // Changes immediately to yellow
如果我对透明度进行动画处理,这将在一秒钟内从1渐变到0,如预期所示:
self.alpha = 0 // animates
我该如何在这种情况下实现背景颜色的动画变化? 我猜我需要制作一个单独的视图 - 这应该放在故事板中的同一视图控制器中吗?还是通过编程创建?
抱歉,我真的很新iOS和Swift。
completion
块立即触发并将其切换回来(在具有完成块的版本中)。我认为这是一个动画问题。 - SimplGyflashBg
函数,但是不想在示例中混淆这个,因为它并不重要--可以在应用启动时调用,也可以在你点击屏幕时调用。它始终不会执行动画。 - SimplGylet animation = CABasicAnimation(keyPath: "backgroundColor"); self.layer.addAnimation(animation, forKey: "flashBg")
,但还是不起作用。我可以动画化position.x
。真希望知道出了什么问题。我不知道如何获取任何有用的调试输出,甚至。 - SimplGy