iPhone - 通过UIWebView播放Youtube视频

时间:2012-02-27 14:06:35

标签: ios iframe uiwebview embed mpmovieplayercontroller

更新

我已将其上传到github,链接为https://github.com/ThinkChris/YouTubeDemo/blob/master/tabtest/FirstViewController.m

要求是:

  1. 应用程序(基于tabviewcontroller)不会被轮换
  2. 嵌入式YouTube视频应以纵向模式进入全屏
  3. 可以旋转全屏视频(纵向和横向)

  4. 大家好我有两段代码可以在uiwebview中嵌入youtube视频,我注意到效果不同。他们都不是MPMoviePlayerController吗?为什么会有差异?

    代码1:视频以纵向全屏开始,旋转受视图控制器限制(如果viewcontroll无法执行此操作,则视频无法保留)

    - (void)addYouTubeVideoWebView:(NSString*)url frame:(CGRect)frame 
    {
        // iframe
        url = @"http://www.youtube.com/embed/IQGhq0IlVok";
        NSString* embedHTML = @"\
        <html>\
            <body style=\"margin:0\">\
                // HERERRRRRRRRRRRRRRRRRRRRRRRRRR
                <iframe src=\"%@?showinfo=0\" width=\"%0.0f\" height=\"%0.0f\" frameborder=\"0\"></iframe>\
            </body>\
        </html>\
        ";
    
        NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];
    
        UIWebView * webView = [[UIWebView alloc] initWithFrame:frame]; 
        [webView loadHTMLString:html baseURL:nil];
        [self.view addSubview:webView];
    }
    

    代码2:从横向全屏幕开始,可以自行旋转到任何方向

    - (void)addYouTubeVideoWebView:(NSString*)url frame:(CGRect)frame 
    {
        // embed
        url = @"http://www.youtube.com/watch?v=IQGhq0IlVok";
        NSString* embedHTML = @"\
        <html>\
            <body style=\"margin:0\">\
                // HERERRRRRRRRRRRRRRRRRRRRRRRRRR
                <embed type=\"application/x-shockwave-flash\" src=\"%@\" width=\"%0.0f\" height=\"%0.0f\"></embed>\
            </body>\
        </html>\
        ";
    
        NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];
    
        UIWebView * webView = [[UIWebView alloc] initWithFrame:frame];  
        [webView loadHTMLString:html baseURL:nil];
        [self.view addSubview:webView];
    }
    

1 个答案:

答案 0 :(得分:1)

使用iframe将HTML文档嵌入HTML文档中。但由于你的iframe不包含有效的HTML文档(只有一个URL),我的猜测是浏览器没有足够的关于你的iframe的信息,无法决定它是否可以在横向播放(为什么它会是像这样,我不知道,这只是猜测。)

  • 尝试为iframe或
  • 设置宽度和高度
  • 尝试在iframe版本中使用嵌入版本的完整HTML代码:

    <html>\
      <body style='margin:0'>\
        <iframe width'%0.0f' height='%0.0f' frameborder='0'>
          <html>\
            <body style='margin:0'>\
              <embed type='application/x-shockwave-flash' src='%@' width='%0.0f' height='%0.0f'></embed>\
            </body>\
          </html>\
        </iframe>\
      </body>\
    </html>\";