如何在 Swift 中使用 CoreAnimation 为 UILabel 文本 属性 制作动画?

How would one animate UILabel text property with CoreAnimation in Swift?

我想使用带有缓动函数(例如 easeInOutQuad)的 CoreAnimation 将 UILabel.text 值从 0 增加到 100。但似乎文本 属性 不可设置动画。那么如何借助CA来实现呢?或者我需要自己实现缓动函数并使用 GCD 调用它吗? 谢谢

P.S。我想尽可能坚持CA。

class ViewController: UIViewController {

    @IBOutlet weak var label: UILabel!

    var counter = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("animate"), userInfo: nil, repeats: true)
        timer.fire()
    }

    func animate() {
        UIView.transitionWithView(label,
                              duration: 1.0,
                              options: [.CurveEaseInOut],
                              animations: { () -> Void in
                                self.counter += 1
                                self.label.text = "\(self.counter)"
        }, completion: nil)

    }
}

您可以使用核心动画来实现。您可以为标签添加动画。尝试以下

CATransition *textAnimation = [CATransition animation];
textAnimation.type = kCATransitionMoveIn;
textAnimation.duration = 0.5;
textAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[numLabel.layer addAnimation:textAnimation forKey:@"changeTextTransition"];

您可以在添加动画后随时更改您的标签文本,它会动画化。

numLabel.text = "1";