2016/06/27更新

[Swift] ViewController間で遷移する方法(複数アニメーション付き)

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日はSwiftで、ViewController間の遷移方法をブログに書きたいと思います。

画像

目次




ViewController間で遷移する(基本編)

ViewController間で遷移するには、以下のように実装します(以下例ではviewDidAppearで遷移していますが、ボタンアクション時などでも同様に書けます)。
import UIKit
class ViewController: UIViewController {

    override func viewDidAppear(animated: Bool) {
        
        // 次の遷移先のViewControllerインスタンスを生成する
        let vc = NextViewController()
  
        // presentViewControllerメソッドで遷移する
        // ここで、animatedをtrueにするとアニメーションしながら遷移できる
        self.presentViewController(vc, animated: true, completion: nil)
    }
}
そして、戻る(1つ前のViewControllerに戻る)場合には、以下のように実装します。
import UIKit
class NextViewController: UIViewController {

    override func viewDidAppear(animated: Bool) {
        
        // 戻る場合には、dismissViewControllerAnimatedメソッドを使います。
        // ここで、animatedをtrueにするとアニメーションしながら遷移できる
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}
新しくViewControllerを表示する場合はpresentViewController、戻る場合にはdismissViewControllerAnimatedを使うところがポイントです。



規定のアニメーションを指定する

上記が基本ですが、以下4つのアニメーションを指定することができます。

内容
UIModalTransitionStyle.CoverVertical 遷移先Viewが下から上にスライドアップする
UIModalTransitionStyle.CrossDissolve 遷移元Viewがフェードアウトしつつ、遷移先Viewがフェードインする
UIModalTransitionStyle.FlipHorizontal 遷移元Viewと遷移先Viewが水平方向に裏返しになる
UIModalTransitionStyle.PartialCurl 遷移元Viewが下からめくれて、遷移先Viewがその下から表示される

これを、遷移前に指定しておくと、指定したアニメーションで遷移することができます。
override func viewDidAppear(animated: Bool) {
    
    let vc = NextViewController()
    
    // ここで遷移アニメーションを指定する
//  vc.modalTransitionStyle = .CoverVertical
//  vc.modalTransitionStyle = .CrossDissolve
//  vc.modalTransitionStyle = .FlipHorizontal
    vc.modalTransitionStyle = .PartialCurl

    self.presentViewController(vc, animated: true, completion: nil)    
}
このように4つの規定アニメーションを指定して、遷移することができます。



独自のアニメーションを指定する

独自にもアニメーションを指定することができます。詳細は以下のブログがわかりやすかったので、そちらをご参照ください。

UIViewControllerAnimatedTransitioningを使って画面遷移アニメーションを作る - Qiita



最後に

今日はSwiftでのViewControllerの遷移についてブログを書きましたが、アニメーションもデフォルトで幾つか用意されていて便利ですね。ライブラリとかも色々とありそうなので調べてみたいと思います。Swiftは今後も学んでいきたい言語の一つなので、色々とブログを書けたらと思います。

最後になりますが本ブログでは、Swift・Python・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。