2017-02-22 6 views
0

アニメーションでボタンが大きくなったり小さくなったりします。ボタンと一緒にフォントを大きくしたり小さくしたりするにはどうすればいいですか?私のコードは以下の通りです。Swift 3ボタンでフォントをアニメーション化する方法

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) 
} 

答えて

1

よう

何か:

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 ... 

} 
+0

'originalFontSizeは=自己ましょう。 playButton?.font.pointSize':UIButton.fontはもう動作しません。 –

+0

'UIButton'自体にはフォント属性はありませんが、' UIButton.titleLabel'は行います。 –

+0

私は間違いを犯す、それは素晴らしい作品です。ありがとう! –

0

代わりにtransformプロパティのアニメーションを調べます。あなたはグラブに元のフォントサイズを保存し、フレームや背景色でそれを行う方法と、それは似て拡張することができ

self.playButton.transform = CGAffineTransform.init(scaleX: 1.2, y: 1.2) 
関連する問題