2017-04-20 10 views
5

私は同じ質問があることを知っていますOnly ONE VIEW landscape mode、私はこれを尋ねる前に注意深く読みました。サブビューのランドスケープだけを作成する方法は?

私のアプリではwebviewという名前のWKWebviewがあり、webviewにはplayerという名前のサブビューがあります。 Webページを読み込むためにwebviewを使用し、ビデオを再生するためにプレーヤーを使用しました。

デフォルトでは、プレーヤーはwebviewの右下に圧縮されています。プレーヤーの展開ボタンをクリックすると、プレーヤーを横向きに拡張します。

webviewController.swiftでは、webviewとプレーヤーが同じことが言えます。つまり、同じコントローラ内です。どのようにプレイヤーを風景にサブビューさせることができますか?

+0

http://stackoverflow.com/questions/24928057/only-one-view-landscape-mode –

答えて

6

UIWindowを複数試すことができます。各UIWindowは、独自のルートビューコントローラを持つことができます。したがって、回転するウィンドウと回転しないウィンドウを持つことは可能です。私はそのようなアプローチを自分で使いました。それは私のためにとてもうまく働いていました。あなたの「サブビュー」を独立したものにすることは非常に難しいかもしれませんが、私はそれが試してみる価値があると思います。この情報が役立つことを願っています。

3

私の見解では、アプリケーションのサブビューの向きを1つしか修正できません。 View Controllerは1つの方向(横/縦)しか持てません

ダミービデオコントローラを画面の右下に配置することができます。その上に、ボタンなどを置くことができます(タップ可能なオブジェクト)。ボタンまたはタップ可能なオブジェクトをクリックすると、ビデオをランドスケープモードでのみ再生できる新しいView Controllerを表示できます。

ビデオの再生が終了すると、View Controllerを閉じることができます。

2

あなたのアプリケーションが以下のようにオリエンテーションチェンジコールを受信したときにクラスを確認できます。

#pragma mark - Orientations Methods 
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]]) 
    { 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    } 
    else 
    { 
     if ([[self.window.rootViewController presentedViewController] isKindOfClass:[UINavigationController class]]) 
     { 
      // look for it inside UINavigationController 
      UINavigationController *nc = (UINavigationController *)[self.window.rootViewController presentedViewController]; 

      // is at the top? 
      if ([nc.topViewController isKindOfClass:[MPMoviePlayerViewController class]]) 
      { 
       return UIInterfaceOrientationMaskAllButUpsideDown; 

       // or it's presented from the top? 
      } 
      else if ([[nc.topViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]]) 
      { 
       return UIInterfaceOrientationMaskAllButUpsideDown; 
      } 
     } 
    } 

    return UIInterfaceOrientationMaskPortrait;   
} 

このメソッドは、クラスがムービープレーヤであれば、ビューを回転させることができるかどうかをチェックします。ムービープレーヤーでユーザーが終了ボタンを押したときに処理する必要があります

関連する問題