我正在使用以下嵌入代码在IOS上嵌入我的YouTube视频
- (NSString*)embedYouTube:(NSString*)youtube_id frame:(CGRect)frame {
NSString* embedHTML = @"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<iframe src=\"http://www.youtube.com/embed/%@?rel=0\" frameborder=\"0\" allowfullscreen width=\"%0.0f\" height=\"%0.0f\"></iframe>\
</body></html>";
NSString *html = [NSString stringWithFormat:embedHTML, youtube_id, frame.size.width, frame.size.height];
return html;
}
//code to embed video
NSString *contentHTML;
if (currentAnswer.youtube_id != nil) {
contentHTML = [self embedYouTube:currentAnswer.youtube_id frame:CGRectMake(CELL_TEXT_LEFT_MARGIN + CELL_AVATAR_WIDTH + CELL_SPACING, currentYAxisValue, CELL_YOUTUBEVIEW_WIDTH, CELL_YOUTUBEVIEW_HEIGHT)];
}
[webView loadHTMLString: contentHTML baseURL:nil];
当我播放视频时,它只能在potrait模式下播放,而不能在横向模式下播放。这是否是由于'iframes'的限制,有什么方法吗?
答案 0 :(得分:2)
如果您的UIViewController也能够旋转到横向,它应该可以工作。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
在尝试旋转视频之前测试您的UIViewController是否能够旋转。如果您不希望UIViewController在视频不在屏幕上时能够旋转,您可以执行以下操作:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(webView && webView.superView) return YES;
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
答案 1 :(得分:0)
在你的UIViewController中,将其视图设置为webView:
[self setView:webView];
您的webview未收到发送到根视图控制器的轮换消息。如果您仅为WebView创建单独的View Controller,也可以使用addChildViewController
方法。
答案 2 :(得分:0)
这与我刚刚回答的另一个问题Fix Notification center orientation after the app resume execution
几乎相同YouTube视频有自己的UIViewController子类来呈现它们。他们实际上没有实现 - (BOOL)shouldAutorotateToInterfaceOrientation; (我知道)所以使用你目前所处的方向。
如果您的应用不会旋转到横向,那么它也不会处于横向状态。设置[UIApplication sharedApplication] .statusbarOrientation应设置Youtube视频的方向,但是如果您选择仅执行此操作,而不是实施Michael Frederick's建议(也是如此),则在视频出现时可能会产生一些异常的影响(如UI画像,但统计栏横向覆盖UI)。
答案 3 :(得分:0)
#define RADIANS(degrees) ((degrees * M_PI) / 180.0)
- (void) setTransformForCurrentOrientation {
UIDeviceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
NSInteger degrees = 0;
if (UIInterfaceOrientationIsLandscape(orientation)) {
if (orientation == UIInterfaceOrientationLandscapeLeft) { degrees = -90; }
else { degrees = 90; }
} else {
if (orientation == UIInterfaceOrientationPortraitUpsideDown) { degrees = 180; }
else { degrees = 0; }
}
rotationTransform = CGAffineTransformMakeRotation(RADIANS(degrees));
[UIView beginAnimations:nil context:nil];
[webView setTransform:rotationTransform];
[UIView commitAnimations];
}