2017-04-20 71 views
5

我知道有一個類似的問題Only ONE VIEW landscape mode,在我問這個問題之前,我已仔細研究過它。如何僅製作一個子視圖?

我在我的應用程序中有一個名爲webview的WKWebview,並且webview有一個名爲播放器的子視圖。我使用webview加載網頁,玩家播放視頻。

默認情況下,播放器壓縮在webview的右下角,我想要將播放器展開到風景,當我單擊播放器的展開按鈕時。

由於webview和播放器是在WebViewController.swift中定義的,也就是說在同一個控制器中。我怎樣才能使播放器子視圖景觀?

+0

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

回答

6

您可以嘗試多個UIWindow。每個UIWindow都可以擁有自己的根視圖控制器。所以有可能有一個窗口可以旋轉,另一個窗口不可以。我自己使用了這種方法,它對我非常有效。將您的「子視圖」設置爲獨立的UIWindow可能非常困難,但我認爲這值得嘗試。希望這些信息有幫助。

3

從我的角度來看,不能只爲應用程序中的子視圖定位一個方向。視圖控制器只能有一個方向(風景/人像)

您可以將虛擬視頻控制器放置在屏幕的右下角,在上方可以放置按鈕或別的東西(可點擊的對象)。當您點擊按鈕或可點擊對象時,您可以呈現一個新的視圖控制器,您只能在橫向模式下播放視頻。

視頻播放完畢後,您可以關閉視圖控制器。

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

這種方法將檢查,如果你的課是電影播放器​​,那麼它將允許旋轉你的視圖。你需要處理當用戶按下完成按鈕在電影播放器​​

相關問題