iOS 8 youtube视频嵌入

时间:2014-09-16 21:07:13

标签: ios xcode uiwebview youtube

我遇到的问题似乎无法理解。

我的代码在Xcode 5中与iOS 7完美配合:

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
  CGFloat width = self.view.frame.size.width;
  CGFloat height = self.view.frame.size.height;
  UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, width, height)];
  NSString* embedHTML = @"\
  <html><head><meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; user-scalable=0;\"/>\
  <style type=\"text/css\">\
    body {\
    background-color: transparent;\
   color: black;\
  }\
  </style>\
  </head><body style=\"margin:0;\">\
  <embed id=\"yt\" src=\"https://www.youtube.com/v/M7lc1UVf-VE?hd=1\" type=\"application/x-shockwave-flash\" \
  width=\"%0.0f\" height=\"%0.0f\"></embed>\
  </body></html>";
  NSString *html = [NSString stringWithFormat:embedHTML, width, height];
  [webview loadHTMLString:html baseURL:nil];
  [self.view addSubview:webview];
}

当我在iOS 8的Xcode 6中构建相同的代码时,视频会显示在webview中,但是很小。

有人能解释一下这里发生了什么,以及我如何克服这个问题?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,我使用这个解决方案解决了

https://developers.google.com/youtube/v3/guides/ios_youtube_helper

也在YTPlayerView.m(~line:610)中尝试这个改变:

[playerParams setValue:[NSString stringWithFormat: @"%0.00f", self.frame.size.height] forKey:@"height"];
// [playerParams setValue:@"100%" forKey:@"height"];
[playerParams setValue:[NSString stringWithFormat: @"%0.00f", self.frame.size.width] forKey:@"width"];
// [playerParams setValue:@"100%" forKey:@"width"];

希望这个帮助

答案 1 :(得分:3)

我在这方面工作了一段时间,并找到了一个可以满足我的目的的解决方案。在我的情况下发生的是由于某种原因iFrame正在使用一些需要丢弃的填充。

另外需要注意的是,如果您将youtube.com作为基本网址加入,它的加载速度会更快。

在故事板中创建一个UIWebView并将@property连接到它,然后在下面引用。

    CGFloat height = self.webView.frame.size.height;
    CGFloat width = self.webView.frame.size.width;
    NSString *youTubeVideoCode = @"dQw4w9WgXcQ";
    NSString *embedHTML = @"<iframe width=\"%f\" height=\"%f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\" style=\"margin:-8px;padding:0;\" allowfullscreen></iframe>";
    NSString *html = [NSString stringWithFormat:embedHTML, width, height, youTubeVideoCode];
    self.webView.scrollView.bounces = NO;
    [self.webView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://www.youtube.com"]];