0

UITabBarController (縦向きに設定) のルート ビュー コントローラー (VC) を持つ iPhone アプリがあり、いくつかのタブがあり、そのうちの 1 つは単純な UIViewController です。その UIViewController には「ビデオの再生」という 1 つのボタンがあり、クリックするとビデオのモーダル ビューが開きます (ビデオの再生が自動的に開始されます)。ビデオ ビューは、UIViewController 内の UIWebView です。Web ビューの VC の向きを横向きに変更しようとしましたが、うまくいきませんでした。

タブ バーまたはナビゲーション コントローラーを使用している場合、すべての子 VC が親と同じ向きになることを理解しました。これは理にかなっています。これが、向きの問題を回避する方法であることを期待して、Web ビューの VC モーダルを作成した理由です。

私の質問は次のとおりです。これは正確ですか - モーダルを使用する場合、Web ビュー VC を縦向きにする必要はなく、shouldAutorotateToInterfaceOrientation メソッドに応答できます (まだ動作させることができていませんが)。

ところで、iOS 6を使用しています。

前もって感謝します。

4

2 に答える 2

1

どうやらios6以降では回転の仕方が違うようです。だからあなたがしなければならないことは次のとおりです

  1. .plist では、4 つの方向すべてをサポートします。
  2. UITabBarController をサブクラス化します (例: CustomTabBarController)
  3. CustomTabBarController に、次のコード行を入れます

    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskPortrait;
    }
    
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return UIInterfaceOrientationPortrait;
    }
    
  4. アプリのデリゲートまたは UITabBarController を初期化している場所で、これらのインスタンスを CustomTabBarController インスタンスに置き換えます。

  5. モーダルコントローラーに次の行を入れます

    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
     {
        return UIInterfaceOrientationLandscapeLeft;
    }
    
    -(BOOL)shouldAutorotate{
        return NO;
    
    }
    

そして、それはすべてうまくいくはずです。

どうやら、私が見つけたトリックは、 UITabBarController があなたの指示を聞かないということです。.plist で言及したすべての方向をサポートします。

そのため、サブクラス化する必要があります。

上記のすべてを実行してみましたが、正常に動作します。お知らせいただければ、必要に応じてコードをお送りします。

于 2012-12-08T02:51:25.623 に答える
1

これを試して。概要画面でポートレートを設定してから、アプリのデリゲートでこれを実装します。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    return UIInterfaceOrientationMaskAll;
}

タブ バー コントローラー (および他の回転コードなし) で:

-(BOOL)shouldAutorotate {
    return NO;
}

そして最後に、モーダル ビュー コントローラーで:

-(BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}
于 2012-12-08T02:05:06.377 に答える