カテゴリー : 2014年 1月4日

ポップオーバー的な何か


「ポップオーバー」っていうユーザインタフェースあるじゃないですか。クラスで言うならUIPopoverControllerですね。今の画面の上にポンと表示できるので、ちょっとした設定画面などを表示するときに便利です。

popover_ipad

でもこれ、iPadでしか使えないんですよね。まぁ、がんばればiPhoneで使えたりするみたいなんですけど、OSのバージョンアップしたときの手間とか考えると、もうやめたい。なので、自力でゴリゴリと作って使っています。

popover_mine

なんでiPhoneでUIPopoverControllerが使えないんだろう?もっと正確に言えば、AppleはiPhoneでのポップオーバー的UIは良くないと考えているんだろうか?狭い画面でビューが多重になると、ゴチャゴチャした印象を与えるからかな。そんなことやるくらいならモーダルにしろよ、ってことでしょうか。

iOS 7では、UIの文法がガラッと変わりました。そのときに、depthって概念が導入されました。階層的にしろってことですね。その例として挙げられているのが、ノーティフィケーションセンターです。ポップオーバーよりも、こんな感じにした方がいいんですかね。

iOS 7のdepthで特徴的なのは、ノーティフィケーションセンターみたいな半透明の背景です。でもこれ、自前のアプリだと実現するの難しいんですよね。それ用のクラスが用意されていないし。自分で実装しようとすると、ぼかしは処理時間が大きすぎて、実用的な時間で動かないし。今のところ、UINavigationBarを引き延ばして無理矢理やってみていますが。でもこれだと、よく分からないタイミングで、いきなり半透明が解除されたりするんですよね。どうもうまいとこいかんです。

popover_navigation