iphone working 在UIWebView中自動旋轉從HTML5<video>播放的視頻



video autoplay loop muted playsinline (1)

我的應用程序,由於某些原因,只支持縱向。
但是,在某些情況下,我需要顯示來自UIWebView(帶有video標籤)的video ,如果用戶可以縱向或橫向查看它,這將是很好的。

控制器配置如下:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
}

結果 :視頻只能在肖像模式下播放(確定,相當期待)。

我試過了:
- 設置此項以支持用戶啟動視頻時的所有方向
- 視頻停止時,返回“僅限肖像”

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    // autorotationEnabled is toggled when a video is played / stopped
    return autorotationEnabled ? YES : UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
}

結果 :風景模式是可用的(太棒了!),但是如果用戶在橫向播放時點擊“完成”,則一旦玩家被解散(不太好),先前的視圖將以橫向模式出現。

有沒有人有一個想法,當玩家被解僱時,如何防止控制器以橫向模式顯示?
(使用UIDevice的私有方法setInterfaceOrientation不是一個選項)


我做了一些非常相似的事情。 您必須修改UIView堆棧以強制應用程序在彈出控制器時調用shouldAutorotateToInterfaceOrientation。

在您的WebViewController設置為允許自動旋轉:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return YES;
}

在父控制器中禁止自動旋轉:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

創建並分配一個UINavigationControllerDelegate。
在委託中,當控制器彈出或按下時臨時修改UIView堆棧:

- (void)navigationController:(UINavigationController *)navigationController 
  willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

// Force portrait by changing the view stack to force autorotation!
if ([UIDevice currentDevice].orientation != UIInterfaceOrientationPortrait) {
    if (![viewController isKindOfClass:[MovieWebViewController class]]) {
        UIWindow *window = [[UIApplication sharedApplication] keyWindow];
        UIView *view = [window.subviews objectAtIndex:0];
        [view removeFromSuperview];
        [window insertSubview:view atIndex:0];
    }
}

這是一種骯髒的黑客,但它的作品。





autorotate