黒毛和牛モモバラ切り落し100g298円

iPhoneアプリを作ってます。リリースノートとかごにょごにょとか用ブログです。

最近のiPhoneアプリ開発ではpresentViewController:とかはあまり使わないの?

Qiitaの【iOS7】フラットデザインUI実装に役立つライブラリのまとめに出てたライブラリが面白そうだったのでダウンロードしてサンプルを実行していたのですが、iPhone Flat Design UIを動かしてるとViewController間の遷移がiOS SDKのpresentViewController:を使った一般的な挙動と明らかに違った感じになっていました。実際の挙動は上のリンクをダウンロードして動かして確認してもらいたいのですが、メニューのボタンをタップすると右からViewControllerがゆっくり移動してくるエフェクトです。またViewControllerからスワイプしたらメニューが左から戻ってくるようになっているのですが、これも一般的な挙動ではないと思います。

 

どういう実装してるのか気になってソースを見てみると、まずViewControllerの表示は親となるViewControllerのself.viewにaddSubviewしてるだけです。以下のようにViewControllerに関連付けられたviewをaddSubviewしてからanimationWithDurationしてます。

 

メニューに戻る際は、メニューのViewControllerに設定されたGestureRecognizerのハンドラでCATransitionでアニメーションしてから上でaddSubviewしたviewを削除してるだけの処理になっていました。

 

iOSのpresentViewControllerだといまいち細かく挙動を制御できないので自分のアプリでも似たようにViewControllerと関連付いたviewをaddSubviewして制御を移したりしてたのですが、最近のアプリ開発だとこういった処理は割とよくあるパターンなのかなー?と気になりました。

 

あとaddSubviewするだけだとビュー階層の制御、例えばViewControllerが裏に回った時に一部の機能を無効にしたり表に回った時にその逆の処理をするのが超面倒くさかったので、その辺どう解決してるのかも気になりました。この辺はライブラリを用意できそうですが、何か有名なやつがあるならそっちを使いたいなーという感じで。

 

以上、ただ気になっただけで特に何も解決しない話でした。