我有一个带有摇动方法的UILabel扩展。此方法将标签摇晃2秒钟。效果很好。
我正在尝试将2秒红色->白色text-color更改链接到标签文本。 效果不佳。
这是我的进步。
extension UILabel {
func shake() {
let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animation.duration = 2
animation.values = [
0.0, 0.0,
-4.0, 4.0,
-7.0, 7.0,
-10.0, 10.0,
-7.0, 7.0,
-4.0, 4.0,
0.0, 0.0,
]
animation.repeatCount = 1
layer.add(animation, forKey: nil)
let colorsAnimation = CABasicAnimation(keyPath: "foregroundColor")
colorsAnimation.fromValue = UIColor.red.cgColor
colorsAnimation.toValue = UIColor.white.cgColor
colorsAnimation.duration = 2
layer.add(colorsAnimation, forKey: nil)
}
}
问题:
colorsAnimation CABasicAnimation对文本颜色没有影响。文本颜色不会在2秒钟内从红色过渡到白色。
如何在标签上将震动动画和colorsAnimation链接在一起?
答案 0 :(得分:0)
CALayers
没有foregroundColor
属性。它们确实具有backgroundColor
属性。您可以制作动画。 (只需将行let colorsAnimation = CABasicAnimation(keyPath: "foregroundColor")
更改为let colorsAnimation = CABasicAnimation(keyPath: "backgroundColor")
您为什么要使用CAAnimation
而不是UIView
动画? CAAnimation
可以完成UIView
动画无法完成的工作,但这是很多,更难以使用,而且记录也不够完善。
(例如,有一个关键帧UIView动画。)