5

我是IOS应用程序开发的新手。我已经使用 UIWebview 和来自 youtube 的嵌入代码添加了用于在我的应用程序中嵌入 Youtube 视频的代码。但是当我在模拟器中运行应用程序时,webview 只是空白。我没有看到任何视频缩略图或其他任何内容。我听说 youtube 视频无法在 iPhone 模拟器上运行,但此链接(“ http://www.youtube.com/embed/36db4r3MsgU ”)显示视频在模拟器中播放完美。请查看此链接并建议我一个解决方案。

NSString *code = @"<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/36db4r3MsgU?feature=player_detailpage\" frameborder=\"0\" allowfullscreen></iframe>";
[[self video]loadHTMLString:code baseURL:nil];

谢谢,阿比拉什.G

4

8 回答 8

10

无需使用嵌入代码。针对 youtube 网址的标准 UIWebView 应该可以正常工作...

// URL from safari address bar. 
NSURL *url = [NSURL URLWithString:@"http://www.youtube.com/watch?v=fDXWW5vX-64"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
于 2013-07-29T03:01:41.093 回答
7

@danh 答案确实有效,但它使用 youtube 播放器嵌入了 youtube 的移动网页,这会占用大量空间并且看起来很糟糕。最好的选择是按照 Youtube Api 博客中的说明进行操作:

更新:由于 youtube 现在使用其 api 的 v3,这里有一个带有官方说明的新链接:https ://developers.google.com/youtube/v3/guides/ios_youtube_helper

于 2013-09-26T01:58:41.510 回答
4

在 iOS 8 中,它开始以不同的方式工作,并为 WebView 添加了填充。我发布了这个问题的答案,它与 iOS 9 和 Xcode 7 完美搭配。内边距(-8px)可能需要根据您的需要进行调整,但总的来说效果非常好。

您只需提供任何 YouTube 视频中的代码(任何 YouTube 视频 URL 中的最后一个字符)

请参阅此处的帖子。

这是代码:

    CGFloat width = self.webView.frame.size.width;
    CGFloat height = self.webView.frame.size.height;
    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"]];
于 2016-02-19T18:08:13.510 回答
2

Google 提供了一个帮助器来在 iOS 应用程序中嵌入和控制 youtube 视频。在此处查看文档:https ://developers.google.com/youtube/v3/guides/ios_youtube_helper

于 2015-03-11T15:18:36.190 回答
2

我在我的应用程序中使用了这个。这不使用任何网络视图

https://www.cocoacontrols.com/controls/hcyoutubeparser

或者

NSURL *urlOfYouTube = [NSURL URLWithString:@"http://www.youtube.com..."];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:urlOfYouTube];
[self.webView loadRequest:requestObj];
于 2013-07-29T03:47:02.013 回答
1

swift 4太容易了

let url = URL(string: "http://www.youtube.com/watch?v=fDXWW5vX-64")

let request = URLRequest(url: url!)

webView?.load(request)

于 2018-02-18T07:28:16.453 回答
1

// 在下面的示例中,我的 UIWebview 被命名为“videoYoutube” // UIWebview size = 320x180 // 下面将设置宽度为指南 ... 或接近它,并根据设备大小进行缩放。

    let bounds = UIScreen.mainScreen().bounds
    let width = bounds.size.width - 18
    let height = bounds.size.width / 1.8
    let frame = 0

    let youtubeVideolink = "https://www.youtube.com/embed/Rg6GLVUnnpM"

    let Code:NSString = "<iframe width=\(width) height=\(height) src=\(youtubeVideolink) frameborder=\(frame) allowfullscreen></iframe>"

    self.videoYoutube.loadHTMLString(Code as String, baseURL: nil)
于 2016-05-16T15:43:46.720 回答
0

对于第一个建议的答案,我遇到了一些问题,例如已加载整个 youtube 页面以修复我使用了一些额外的代码,这些代码是

NSString *baseUrl = [NSString stringWithFormat:@"%@%@",@"http://www.youtube.com/watch?v=",embedCode];
    NSURL *url = [NSURL URLWithString:baseUrl];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    videoWebView = [[UIWebView alloc] initWithFrame:imageview.frame];
    [videoWebView loadRequest:request];
    [videoWebView setNeedsLayout];
    [videoWebView setAllowsInlineMediaPlayback:YES];
    videoWebView.mediaPlaybackRequiresUserAction = YES;
    videoWebView.scrollView.scrollEnabled = NO;
    videoWebView.scrollView.bounces = NO;
    [self.contentView addSubview:videoWebView];
于 2017-06-22T11:02:02.480 回答