UITabBarControllerのタブの切替時にアニメーションする

UITabBarControllerのタブの切替時にアニメーションする最近、ブログ書いていなかったので超小技ですが、書いてみます。

前提として、UITabBarControllerのviewControllersにViewControllerが2つ以上セットされている状態で、遷移元のViewControllerに記述した例です。UITabBarControllerへのviewControllerのセットはコードで書いてもUIStoryboardで書いても良いです。今回は、必要なことを事前にやってくれるUIStoryboardでタブ構成を作成したところから始めます。

        UIViewController *nextViewController = self.tabBarController.childViewControllers[1];
        [UIView transitionFromView:self.view
                            toView:nextViewController.view
                          duration:1.0
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        completion:
         ^(BOOL finished) {
             self.tabBarController.selectedViewController = nextViewController;
         }];

これだけです。

解説します。まず、self.tabBarControllerで、現在のUIViewControllerを格納しているUITabBarControllerのインスタンスが取得できます。UITabBarControllerはchildViewControllersというNSArrayのプロパティを持っています。

self.tabBarController.childViewControllers[1]

これで、その1番めのUIViewControllerのインスタンス(遷移先のUIViewController)を取得しています。

次にUIViewのアニメーションクラスメソッドであるtransitionFromView:toView:duration:options:completionを利用して遷移します。optionのUIViewAnimationOptionTransitionCrossDissolveを変えることでアニメーションの種類をいろいろ変えることができます。

最後に、UITabBarControllerのselectedViewControllerに遷移先のviewControllerをセットして完了です。これはかなり基本的なメソッドを使ってやりましたが、UITabBarControllerの切替はぱっと画面が変わるだけでそっけないので、何かちょっと変わったことがしたいというニーズがあれば利用してみてください。あと、応用すれば様々なアニメーションが可能になりますね!

メソッドなどに関する質問など、あれば、コメントしてみてください。可能な限り回答してみたいと思います。

ではでは。よろしくお願いいたします。

Pocket
LINEで送る

You may also like...