Swift 3 如何在按钮中设置动画字体

Swift 3 how to animate font in a button

我有一个按钮,它会随着动画变大变小。我怎样才能让字体随着按钮变大变小。我的代码如下。

func animate() {
    let originalFrame = self.playButton.frame

    let originalBackgroundColor = self.playButton.backgroundColor

    UIView.animateKeyframes(withDuration: 2, delay: 0, options: UIViewKeyframeAnimationOptions.calculationModeLinear, animations: {

        // make the button grow and become dark gray
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.5) {
            self.playButton.frame.size.height = self.playButton.frame.size.height * 1.2
            self.playButton.frame.size.width = self.playButton.frame.size.width * 1.2

            self.playButton.frame.origin.x = self.playButton.frame.origin.x - (self.playButton.frame.size.width / 12)
            self.playButton.frame.origin.y = self.playButton.frame.origin.y - (self.playButton.frame.size.height / 12)
        }

        // restore the button to original size and color
        UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5) {
            self.playButton.frame = originalFrame
            self.playButton.backgroundColor = originalBackgroundColor
        }
    }, completion: nil)
}

考虑为 transform 属性 设置动画。

类似

self.playButton.transform = CGAffineTransform.init(scaleX: 1.2, y: 1.2)

您可以存储抓取原始字体大小并像处理框架和背景颜色那样缩放它:

func animate() {

    // Original frame and background color
    let originalFontSize = self.playButton.titleLabel?.font.pointSize

    // First UIView.addKeyframe()
    UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.5) {
        self.playButton.titleLabel?.font = UIFont.systemFont(ofSize: originalFontSize!*1.2)
        // Other animations ...
    }

    // Second UIView.addKeyframe() to return to normal
    UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5) {
        self.playButton.titleLabel?.font = UIFont.systemFont(ofSize: originalFontSize!)
        // Other animations ...

}