非原创、ChatGPT 问答生成
CWMoney 应用中的首页记账动画效果,包括“$”符号的跳动和闪亮动画,可以通过组合使用 CABasicAnimation
、CAKeyframeAnimation
和 CAAnimationGroup
来实现。下面是一个使用 Swift 和 Core Animation 实现类似效果的示例。
实现步骤
- 跳动动画:通过
CAKeyframeAnimation
改变视图的 y 坐标实现跳动效果。 - 闪亮动画:通过
CABasicAnimation
改变视图的透明度实现闪亮效果。 - 组合动画:通过
CAAnimationGroup
将跳动和闪亮动画组合起来,使其同时执行。
代码示例
import UIKit
class ViewController: UIViewController {
let dollarLabel: UILabel = {
let label = UILabel()
label.text = "$"
label.font = UIFont.systemFont(ofSize: 40)
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(dollarLabel)
setupConstraints()
animateDollarLabel()
}
func setupConstraints() {
NSLayoutConstraint.activate([
dollarLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
dollarLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
func animateDollarLabel() {
// 跳动动画
let jumpAnimation = CAKeyframeAnimation(keyPath: "position.y")
jumpAnimation.values = [0, -10, 0]
jumpAnimation.keyTimes = [0, 0.5, 1]
jumpAnimation.duration = 0.5
jumpAnimation.isAdditive = true
jumpAnimation.repeatCount = Float.infinity
// 闪亮动画
let flashAnimation = CABasicAnimation(keyPath: "opacity")
flashAnimation.fromValue = 1.0
flashAnimation.toValue = 0.0
flashAnimation.duration = 0.5
flashAnimation.autoreverses = true
flashAnimation.repeatCount = Float.infinity
// 组合动画
let animationGroup = CAAnimationGroup()
animationGroup.animations = [jumpAnimation, flashAnimation]
animationGroup.duration = 0.5
animationGroup.repeatCount = Float.infinity
dollarLabel.layer.add(animationGroup, forKey: "jumpAndFlash")
}
}
解释
- UILabel:创建一个 UILabel 来显示“$”符号,并设置其字体大小和位置。
- CAKeyframeAnimation:创建一个关键帧动画,改变
position.y
属性,实现跳动效果。values
定义了动画过程中 y 坐标的变化,keyTimes
定义了每个关键帧的时间点,duration
定义了动画持续时间,isAdditive
使动画的值相对原始位置叠加。 - CABasicAnimation:创建一个基本动画,改变
opacity
属性,实现闪亮效果。fromValue
和toValue
分别定义了动画的初始和结束透明度,autoreverses
设置为true
使动画在结束时反向播放。 - CAAnimationGroup:创建一个动画组,将跳动和闪亮动画组合在一起,
animations
属性包含所有子动画,duration
定义了动画组的持续时间,repeatCount
定义了动画的重复次数。
将这些动画添加到 dollarLabel
的图层上,就可以实现类似 CWMoney 应用中的“$”符号跳动和闪亮的动画效果。