2017-04-20 17 views
5

Wiem, że istnieje jednoznaczne pytanie: Only ONE VIEW landscape mode, i przeczytałem je dokładnie, zanim zapytam.jak zrobić tylko krajobraz pejzażu?

Mam WKWebview nazwany jako webview w mojej aplikacji, a widok internetowy ma widok podrzędny nazwany jako odtwarzacz. Użyłem strony internetowej do załadowania strony internetowej i odtwarzacza, aby odtworzyć wideo.

Domyślnie odtwarzacz jest kompresowany w prawym dolnym rogu widoku internetowego, a chcę rozwinąć odtwarzacz do pionu po kliknięciu przycisku rozwijania odtwarzacza.

Ponieważ przeglądarka internetowa i odtwarzacz są zdefiniowane w WebViewController.swift, to znaczy w tym samym kontrolerze. W jaki sposób mogę sprawić, że odtwarzacz zostanie poddany pejzażowi?

+0

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

Odpowiedz

6

Możesz spróbować z wieloma UIWindow. Każdy UIWindow może mieć swój własny kontroler widoku root. Możliwe jest więc jedno okno, które się obraca, a drugie nie. Skorzystałem z takiego podejścia i to bardzo dobrze. Może być bardzo trudno zrobić "podgląd" jako niezależny UIWindow, ale myślę, że warto spróbować. Mam nadzieję, że te informacje pomogą.

3

Z mojego punktu widzenia w aplikacji nie można naprawić tylko jednej orientacji dla podglądu. Kontroler widoku może mieć tylko jedną orientację (poziomą/pionową). Można umieścić fałszywy kontroler wideo w prawym dolnym rogu ekranu, a powyżej można umieścić przycisk lub coś innego (obiekt z możliwością odsuwania). Po kliknięciu przycisku lub tappable obiektu można przedstawić nowy kontroler widoku, w którym można odtwarzać wideo tylko w trybie poziomym.

Po zakończeniu odtwarzania wideo można odłączyć kontroler widoku.

2

Możesz sprawdzić klasę, gdy twoja aplikacja otrzymała wywołanie zmiany orientacji, jak poniżej.

#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;   
} 

Ta metoda sprawdzi, czy klasa jest odtwarzaczem filmów, to pozwoli obrócić widok. Musisz postępować, gdy użytkownik naciśnie przycisk zakończony w odtwarzaczu filmów

Powiązane problemy