iOS - 通过UIWebView在Landscape中强制显示YouTube视频

时间:2014-01-22 11:35:35

标签: ios uiwebview youtube-api modalviewcontroller

我有一个只支持肖像模式的应用。 为了在全屏强制横向模式下播放YouTube视频,我尝试了一个包含自动播放的网页视图的模态视图控制器。

对于这样的vc,我实现了:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

此外,在RootViewController(它是一个TabBarViewController)中:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    NSUInteger orientations = UIInterfaceOrientationMaskPortrait;

    if(/*modal view controller with web view is open*/) {
        return UIInterfaceOrientationMaskLandscape;
    }

    return orientations;
}

但它不起作用,视频旋转,从那一点开始,从横向模式中解除模态vc后,整个应用程序仍保留在风景中。

非常感谢任何帮助!

谢谢,DAN

2 个答案:

答案 0 :(得分:0)

尝试使用此方法:

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{

    return UIInterfaceOrientationLandscapeLeft;

}

答案 1 :(得分:0)

所以你想要容器UIWebView旋转而不是内部的视频。

当您的容器旋转时,YouTube视频等内部内容随之旋转。如果无论如何都要解决这个问题,你必须在旋转时反向旋转你的视频,所以看起来它根本不会旋转。

这样的事情:(代码不完整,但你可以得到这个想法,应用90度旋转。)

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                              duration:(NSTimeInterval)duration {   // Rotate to landscape  
 self.view.frame = CGRectMake(0, 0, 480.0, 320.0);   
 if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
      CGAffineTransform transform = self.view.transform;

     // Set the center point of the view to the center point of the window's content area.      
     self.view.center = CGPointMake(160.0, 240.0); 
     // Rotate the view 90 degrees around its new center point.
     transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
     self.view.transform = transform;
 }
}