我正在尝试在UIWebView
内播放YouTube视频(请参阅下面的代码)。
一切正常,但YouTube播放器不支持iOS 6上的方向更改。我的整个应用仅处于纵向模式。
如何解决此问题?任何帮助表示赞赏。
我正在使用的代码如下:
- (void)viewDidLoad
{
[super viewDidLoad];
float width = 300.0f;
float height = 300.0f;
youTubeURL = @"http://www.youtube.com/embed/ZiIcqZoQQwg";
UIWebView *wv = [[UIWebView alloc] init];
wv.frame = CGRectMake(10, 80, width, height);
NSMutableString *html = [[NSMutableString alloc] initWithCapacity:1] ;
[html appendString:@"<html><head>"];
[html appendString:@"<style type=\"text/css\">"];
[html appendString:@"body {"];
[html appendString:@"background-color: black;"];
[html appendString:@"color: white;"];
[html appendString:@"}"];
[html appendString:@"</style>"];
[html appendString:@"</head><body style=\"margin:0\">"];
[html appendFormat:@"<embed id=\"yt\" src=\"%@\"", youTubeURL];
[html appendFormat:@"width=\"%0.0f\" height=\"%0.0f\"></embed>", 300.0f, 300.0f];
[html appendString:@"</body></html>"];
[wv loadHTMLString:html baseURL:nil];
[self.view addSubview:wv];
}
答案 0 :(得分:3)
你需要做的就像下面......
首先在viewdidLoad中发出一个通知,当你旋转你的设备时,它会被调用..
-(void)ViewDidLoad
{
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(rotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
现在通知将调用名为“rotate:”的方法,因此我们必须实现如下方法。
#pragma mark - Rotate Screen Method
- (void)rotate:(NSNotification *)n {
switch ([[UIDevice currentDevice] orientation]) {
case UIDeviceOrientationLandscapeLeft:
yourwebview.transform = CGAffineTransformMakeRotation(M_PI / 2);
yourwebview.frame = CGRectMake(0, 0, 768, 1024);//you can set any frame
break;
case UIDeviceOrientationLandscapeRight:
yourwebview.transform = CGAffineTransformMakeRotation(-M_PI / 2);
yourwebview.frame = CGRectMake(0, 0,768, 1024);//you can set any frame
break;
case UIDeviceOrientationPortrait:
yourwebview.transform = CGAffineTransformIdentity;
yourwebview.frame = CGRectMake(0, 0, 768, 1024);//you can set any frame
break;
case UIDeviceOrientationPortraitUpsideDown:
yourwebview.transform = CGAffineTransformMakeRotation(M_PI);
yourwebview.frame = CGRectMake(0, 0, 768, 1024);//you can set any frame
break;
default:
break;
}
}
就是这样。
答案 1 :(得分:2)
如果您需要纵向和横向支持,则必须在“目标”下设置应用支持的模式 - &gt;摘要 - &gt; “支持的界面方向”。
加载播放器的代码是正确的。您只需要单独添加方向支持。
如果您使用的是自动布局,请检查xib中的约束。如果没有,则在NiravPatel提到的每个方向更改上为Web视图设置框架。
如果只想旋转一个视图控制器,请在所有视图控制器中添加:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return NO; }
您可以在应该旋转的Viewcontroller上返回YES,并在其他viewControllers上返回NO。