[Swift] UIViewをアニメーションさせる方法
こんにちは、@yoheiMuneです。
現在、Music Pocketのver.2を開発しています。例えばViewを消すようなUI変更の場合にも、ちょっとしたアニメーションを付与することで、とても理解しやすい動きになります。そのちょっとしたアニメーションを実装する機会がSwiftでありましたので、実装方法をブログに残したいと思います。
UIView Class Reference(Safari推奨)
Swiftの実装はコードを残していかないと忘れてしまいそうなので、今後もいっぱいSwiftについてのブログを書こうと思います。
本ブログでは、フロントエンドやiOSに関する情報を中心に発信していきます。気になった方はぜひ、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
現在、Music Pocketのver.2を開発しています。例えばViewを消すようなUI変更の場合にも、ちょっとしたアニメーションを付与することで、とても理解しやすい動きになります。そのちょっとしたアニメーションを実装する機会がSwiftでありましたので、実装方法をブログに残したいと思います。
Special Thanks to https://flic.kr/p/s6Jckc
UIVewをアニメーションさせる
UIViewをアニメーションさせるのは簡単で、数行コードを書くだけで実現することができます。今回は以下のViewをアニメーションさせることにします。// アニメーション対象 let aView = UIView(frame: CGRectMake(0, 0, 100, 100))そして、アニメーションについて今回は
UIView.animateWithDuration
を利用します。幾つかのオーバーロードが存在しますので利用用途に合わせて見ていきたいと思います。もっとも簡単なUIViewアニメーション
以下はもっとも簡単なUIViewアニメーションの実装例です。UIView.animateWithDuration(5, animations: { () -> Void in aView.backgroundColor = UIColor.greenColor() })ここでは5秒かけてaViewの背景色を緑色に変更しています。
アニメーション完了後に処理を行う
もしアニメーション終了時に何か処理を行いたい場合には、以下のように実装します。UIView.animateWithDuration(5, animations: { aView.alpha = 0 }, completion: { finished in aView.removeFromSuperview() })上記のコードの場合、5秒間でaViewを透明にして、アニメーションが終わった時点でaViewを削除します。
開始を遅延させてアニメーションを行う
アニメーションの開始を遅延することもできます。以下のように実装します。UIView.animateWithDuration(5, delay: 1, options: 0, animations: { () -> Void in // アニメーションの処理 }, completion: { _ in // 完了時の処理 })上記の場合、
delay
引数に1
を指定することでアニメーション開始を1秒遅延させています。アニメーションカーブを指定する
また、アニメーションの変化具合を指定することが可能です。UIView.animateWithDuration(5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in // アニメーションの処理 }, completion: { _ in // 完了時の処理 })
options
引数にはアニメーションカーブ以外にも様々な値を指定可能ですが、今回の場合はCurveEaseInOut
を指定することでアニメーションカーブを指定しています。指定可能なアニメーションカーブは以下の参考資料をご覧ください。参考資料
今回は、以下のiOS Developer Libraryを参照しました。ありがとうございます。UIView Class Reference(Safari推奨)
最後に
Swift構文は数ヶ月コードを書いていますがなかなか慣れませんね。。XCODEのコード補完がイマイチで、補完をしたら構文が壊れることもちらほら・・・。執筆時点では上記のcompletion
をコード補完すると構文が壊れました(泣)。改善されるといいなぁと思う今日この頃です。Swiftの実装はコードを残していかないと忘れてしまいそうなので、今後もいっぱいSwiftについてのブログを書こうと思います。
本ブログでは、フロントエンドやiOSに関する情報を中心に発信していきます。気になった方はぜひ、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!