すべてのデバイス向きをサポートするiPhoneアプリがありますが、私はランドスケープでのみ表示する特定のモーダル表示を持っています。デバイスの向きとは異なる向きのモーダル表示
デバイスが横向きの場合、正常に動作しますが、デバイスが物理的に縦向きに保持されている場合、デバイスの向きは表示されません。
デバイスが縦向きに保持されているため、画像が切り取られ、左右の端がディスプレイの端から外れています。画像は狭い寸法と同じ高さしかないので、上と下が親ビューの背景を示します。私がデバイスを横向きに回転させると、すべてがうまくいきます。私の研究では
は私が頻繁にshouldAutorotateToInterfaceOrientation渡って来るが、私はそれが私の状況には適用されないデバイスが物理的に回転させたときにのみトリガーされますイベントであると考えています。デバイスは物理的に縦向きに保持されていますが、あたかも横長のままにしているかのように表示したいと考えています。
[[のUIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]も言及されているが、私はそれを使用して試したいかなる効果を有することを見たことがありません。
私の質問は、デバイスの物理的な向きとは異なる方向でビューの最初の表示を強制する簡単な方法があり、それを行う方法が正確にある場合です。私はモーダル私のビューを表示するには、次のロジックを使用しています
:
TitleViewController *titleController = [[TitleViewController alloc] initWithNibName:@"TitleViewController" bundle:[NSBundle mainBundle]];
titleController.delegate = self;
titleController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:titleController animated:YES];
[titleController release];
私は、デバイスが縦向きに保持されている場合でも、常に横向きでのモーダルビューを表示します。
UPDATE機能するソリューションが見つかり
:
if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
{
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480, 320);
}
をしかし、オリエンテーションUIInterfaceOrientationPortraitUpsideDownを扱うときには、それが最初に正しい向きでビューを表示しますが、その後に戻ってそれをシフト側面が切り取られた縦向きで、画像の上下に背景が表示されます。私はいつも270、-90、および他の値だけに角度を微調整しようとしている
はUIInterfaceOrientationPortraitUpsideDown向きのときにポートレートに戻ります。
なぜですか?
問題は、モーダルビューが最終的に要求されて表示される前に、方向が何度も変更され、任意の方向になる可能性があることです。やや動作するようには思えない – GRW