2011-10-26 9 views
1

iOSアプリケーションでHUDとして使用されているサブビューを作成しました。このアプリはポートレートとランドスケープの表示方向をサポートしています。サブビューの向きが正しくない

モードが横向きであっても、サブビューはポートレートモードで表示されることがあります。

self.infoHUDViewController = [[[InfoHUDViewController alloc] initWithNibName:@"InfoHUD" bundle:nil] autorelease]; 
[self.view addSubview:self.infoHUDViewController.view]; 

サブビューをviewDidLoad方法で追加されたのであれば、それは非常にうまく機能:サブビューは、これらの行によって追加されます。ただし、ビューがボタンの押下に応答するIBActionメソッドで追加されている場合は、ランドスケープモードでは機能しません。サブビューは、ポートレートモードの場合と同様に表示されます(90°回転したように見えますが、画面の半分の幅しか塗りつぶさず、画面境界を超えて広がります)。

本当に奇妙なこと:サブビューのView Controllerのinitメソッドでは、表示の向きが正しくlandscapeに設定されています。私はここに何かを逃していますか

答えて

2

この問題の修正が見つかりました。

IはviewDidLoad方法

if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) { 
    self.view.frame = CGRectMake(0.0f, 0.0f, 480.0f, 320.0f); 
} else { 
    self.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f); 
} 

を加えました。今はすべてがすべての状況で例外として動作します。

+0

あなたはiPhone 5や6などの将来のデバイスには適していない画面サイズをハードコードしました。 –

+0

true ...しかし、この回答は長い間ずっと以前に書かれました。さて、私はもうフレームサイズをハードコードしません。 – spa

関連する問題