読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #285】CoreAnimationを使ったスプリングアニメーション(CASpringAnimation)

この記事を読んでわかること

  • CoreAnimationを使ったスプリングアニメーション

CASpringAnimationで使うプロパティについて

CoreAnimation Frameworkにある CASpringAnimationクラスを使う。
(Deployment TargetがiOS9.0以上である必要あり)

  • damping この値が大きいほど、振り子の振幅がすぐに小さくなる
  • mass 値が大きいほど、振り子が振れる時間が長くなる
  • stiffiness この値が大きいほど、振り子の振幅がすぐに小さくなる
  • initialVelocity この値が大きいほど、アニメーション開始直後の速度が速い

サンプル

ログイン画面でユーザー名、パスワードの入力が
4文字未満の場合にテキストフィールドにアニメーションさせ、
ユーザーに間違っていることを伝えるサンプルです。

UITextFieldDelegateのtextFieldDidEndEditingを使って、
ユーザー名、パスワードの入力を終えたときに
4文字未満かどうかチェックしています。

func textFieldDidEndEditing(_ textField: UITextField) {
    
    guard let input = textField.text else{ return }
    
    // less than 4 characters, invalid.
    if input.characters.count < 4{
        let invalidAnimation = CASpringAnimation(keyPath: "transform.scale")
        invalidAnimation.fromValue = 1.25
        invalidAnimation.toValue = 1.0
        invalidAnimation.initialVelocity = 30.0
        invalidAnimation.damping = 15.0
        invalidAnimation.stiffness = 120.0
        invalidAnimation.duration = invalidAnimation.settlingDuration  // アニメーション終了時間を自動計算
        textField.layer.add(invalidAnimation, forKey: nil)
        
        textField.backgroundColor = UIColor.red
    }else{
        textField.backgroundColor = UIColor.white
    }
}

damping、mass、stiffiness、initialVelocityについて、 思い描いているアニメーションを実現する値を見つけるのは難しいので、 値をいじっては動かしてみて確認するというやり方でアニメーションを作っています。

また、大きさだけでなく、色などのプロパティに対しても、
アニメーションさせられるので、試してみると面白いかもしれません。

サンプルソースはこちらからダウンロードできます。
SampleCASpringAnimation.zip - Google ドライブ


参考情報

Swift

iOSアプリ開発未経験の人向け
・Swift初心者の人に評判が良いようですね


・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】


②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾


③中級者、上級者向け

詳解 Swift

詳解 Swift

詳解 Swift 改訂版

詳解 Swift 改訂版