我有一个只支持肖像模式的应用。 为了在全屏强制横向模式下播放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
答案 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;
}
}