【Swift/UIKit】UIView.transitionメソッドの使い方!アニメーションの実装

【Swift/UIKit】UIView.transitionメソッドの使い方!アニメーションの実装

この記事からわかること

  • Swift/UIKitUIViewアニメーションさせる方法
  • transitionメソッド使い方違い
  • 画面遷移時にアニメーションを実装する

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

UIKitを使用したiOSアプリ開発でビューにアニメーションを実装する方法をまとめて行きます。

アニメーションを実装する方法

アニメーションを実装する方法はいくつか用意されています。それぞれの役割とは以下の通りになります。

UIView.transitionメソッドの使い方

UIView.transitionメソッドを使用することでビューに遷移アニメーションを簡単に付与することができます。「遷移アニメーション」とは画面Aから画面Bに遷移する際などに挟むことができるアニメーションです。わざわざ遷移させなくても、変化するプロパティを変更するだけでも動作を確認することができます。


class func transition(
    with view: UIView,
    duration: TimeInterval,
    options: UIView.AnimationOptions = [],
    animations: (() -> Void)?,
    completion: ((Bool) -> Void)? = nil
)

公式リファレンス:UIView.transitionメソッド

引数

動作確認するためにviewDidLoad中で以下のように実装する場合はDispatchQueueを使用して読み込み直後に処理が走らないようにしないと遷移アニメーションが表示されないので注意してください。

class ViewController: UIViewController {

  override func viewDidLoad() {
      super.viewDidLoad()
      
      let square = UIView(frame: CGRect(x: 0, y:0, width: 150 , height: 150))
      square.backgroundColor = .orange
      square.center = self.view.center
      self.view.addSubview(square)
      
      DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
          UIView.transition(with: square, duration: 1.0, options: [.transitionFlipFromTop], animations: {
              square.backgroundColor = .blue
          }, completion: nil)
      }
  }
}

AnimationOptions型で指定できる値はUIView.animateメソッドで指定できるものよりtransitionFlipFromToptransitionFlipFromBottomtransitionFlipFromLefttransitionFlipFromRighttransitionCurlUptransitionCurlDowntransitionCrossDissolveなどが追加されています。

transitionFlipFromTop/transitionFlipFromBottom

Viewを縦向きに回転させて遷移させることができます。Topなら上向きにBottomなら下向きに回転します。

UIView.transition(with: square, duration: 1.0, options: [.transitionFlipFromBottom], animations: {
    square.backgroundColor = .blue
}, completion: nil)
【Swift/UIKit】UIView.transitionメソッドの使い方!アニメーションの実装

transitionFlipFromLeft/transitionFlipFromRight

Viewを横向きに回転させて遷移させることができます。Leftなら左向きにRightなら右向きに回転します。

UIView.transition(with: square, duration: 1.0, options: [.transitionFlipFromRight], animations: {
    square.backgroundColor = .blue
}, completion: nil)
【Swift/UIKit】UIView.transitionメソッドの使い方!アニメーションの実装

transitionCurlUp/transitionCurlDown

Viewを付箋をめくったように遷移させることができます。CurlUpなら上にめくったようにCurlDownならめくられたものが戻るように変化します。

UIView.transition(with: square, duration: 1.0, options: [.transitionFlipFromRight], animations: {
    square.backgroundColor = .blue
}, completion: nil)
【Swift/UIKit】UIView.transitionメソッドの使い方!アニメーションの実装

画面遷移(NavigationController)でアニメーションを実装する

NavigationControllerを使用して画面を遷移した際にアニメーションを実装するには以下のように実装します。

 @IBAction  func transition() {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let nextVC = storyboard.instantiateViewController(withIdentifier: "SecondView")

    UIView.transition(with: navigationController!.view, duration: 1.0, options: [.transitionFlipFromRight], animations: {
        self.navigationController?.pushViewController(nextVC, animated: false)
    }, completion: nil)
}
【Swift/UIKit】UIView.transitionメソッドの使い方!アニメーションの実装

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index