2011/11/30

UIAlertの出力方向を制御してみる。

UIAlertの出力の向きなんて、通常はあまり意識しない。
意識しなくても、常にそれっぽい向きに出力されているからだ。

しかし、意識せざるを得ない状況は確かに存在する。

それは、UIImagePickerControllerをカメラモードで表示した場合だ。
この場合、開発者の手の届く範囲は、cameraOverlayViewが精一杯と行ったところだろう。

しかし、問題がある。
cameraOverlayViewに登録したViewのViewControllerには、

shouldAutorotateToInterfaceOrientation:の通知が来ない。
つまり、cameraOverlayViewはiPhoneの向きに合わせて回転してくれない。

これを解消するために、notificationCenterから通知を受けて、
無理くり画面を回転させる方法をとる。

事の発端はここなのかもしれないが、
こうする事で、画面は回る。回るのだが、回転するのは画面だけだ。
ここで、他アプリ通知でAlertが表示されたりすると、
画面(cameraOverlayView)は横を向いているのに,
Alertは順方向で表示される。
されてしまう。

これを解消するための方法は、ある。

まず覚えておかなければならないのは、
Alertの表示方向は、stautsBarの位置に影響される。
(statusBarの表示/非表示には関係ない)
つまり、cameraOverlayViewの回転と同時に
[UIApplication sharedApplication].statusBarOrientationを使って
statusBarの位置を調整する。

これで、Alertの向きは正しく表示される。
カメラも安心だ。




0 件のコメント:

コメントを投稿