0

ビュー階層を次のように設定しました。

UITabBarController
    |
    UINavigationController
    |  |
    |  UIViewController
    |
    UINavigationController
       |
       UIViewController

問題は、ポートレートでのみ表示される ViewController を持っていることです。デバイスをランドスケープにするとすぐに、別の ViewController が上にプッシュされ、これまでのところ意図したとおりに機能しています。

私が今欲しいのは、新しくポップされたViewControllerの戻るボタンを押すとすぐに、デバイスがまだランドスケープにあるにもかかわらず、古いViewControllerがポートレートに強制されることです。
トランジションで試してみましたが、他のビューが台無しになり、方向が正しく認識されなくなり、ずれたビューが混乱します。

4

3 に答える 3

2

私のために働いた唯一のことは使用していました

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

私のViewControllerで、それをpresentModalViewControllerで提示します。これにより、ビューが横向きのままになります。まさに私が望んでいたものではありませんが、うまくいきました。

于 2012-04-25T13:44:01.277 に答える
1

以下のコードは、ビューを強制的に横向きモードにしますが、親のビューコントローラーが横向きモードをサポートしている場合に限ります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

横向きモードに強制するビューの親ビューコントローラーが縦向きのみの場合は、新しい新しいナビゲーションコントローラーを作成する必要があります。これを行う最も簡単な方法は、強制ランドスケープビューコントローラーをモーダルビューで表示することです。したがって、pushViewControllerの代わりにpresentModalViewControllerを使用してください。

于 2012-06-08T14:26:48.710 に答える
1

これを元のView Controllerに追加してみてください:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) return YES;
    return NO;
}

これにより、縦向きでのみ表示されるようになります。

于 2011-11-25T11:47:40.627 に答える