6

我正在使用以下嵌入代码在 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];

当我播放视频时,它只在纵向模式下播放,而不是横向模式。这是由于“iframe”而受到的限制,有什么办法可以解决吗?

4

4 回答 4

2

如果您的 UIViewController 也能够旋转到横向,它应该可以工作。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

在尝试旋转视频之前测试您的 UIViewController 是否能够旋转。如果您不希望您的 UIViewController 在视频不在屏幕上时能够旋转,您可以执行以下操作:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if(webView && webView.superView) return YES;
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
于 2012-07-02T01:43:18.413 回答
0

在您的 UIViewController 中,将其视图设置为 webView:

[自我 setView:webView];

您的 webview 没有收到发送到根视图控制器的旋转消息。addChildViewController如果您只为您的 webView 制作了一个单独的 View Controller,您也可以使用该方法。

于 2012-07-02T01:47:38.867 回答
0

这与我刚刚回答的另一个问题几乎相同,Fix Notification centerorientation after the app resume execution

YouTube 视频有自己的 UIViewController 子类来呈现它们。他们实际上并没有实现 -(BOOL)shouldAutorotateToInterfaceOrientation; (我知道)所以使用你目前所处的任何方向。

如果您的应用程序没有旋转到横向,那么它也不会是横向的。设置 [UIApplication sharedApplication].statusbarOrientation 应该设置 Youtube 视频的方向,但是如果您只选择这样做,而不是执行Michael Frederick 的建议(以及),它可能会在视频出现时产生一些不寻常的效果(如UI 纵向但统计栏横向覆盖 UI)。

于 2012-07-07T14:04:48.287 回答
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];
}
于 2012-07-08T13:29:32.657 回答