我是IOS应用程序开发的新手。我已经添加了通过使用UIWebview在我的应用程序中嵌入Youtube视频的代码和来自Youtube的嵌入代码。但是当我在模拟器中运行应用程序时,网络视图只是一片空白。我没有看到任何视频缩略图或其他内容。我听说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];
谢谢,Abilash.G
无需使用嵌入代码。针对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];
@danh answer确实有效,但它将youtube的移动网页嵌入了youtube播放器,这占用了大量空间,而且看起来很糟糕。最好的选择是按照Youtube Api博客中的说明进行操作:
更新:由于youtube现在使用其api的v3,这里有一个带有官方说明的新链接:https://developers.google.com/youtube/v3/guides/ios_youtube_helper
在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"]];
我在我的应用程序中使用过这个。这不使用任何webview
https://www.cocoacontrols.com/controls/hcyoutubeparser
或
NSURL *urlOfYouTube = [NSURL URLWithString:@"http://www.youtube.com..."];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:urlOfYouTube];
[self.webView loadRequest:requestObj];
Google提供了一个助手,用于在iOS应用程序中嵌入和控制youtube视频。请查看此处的文档:https://developers.google.com/youtube/v3/guides/ios_youtube_helper
//MY UIWebview在下面的示例中被命名为"videoYoutube"//UIWeb视图大小=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)
在swift 4中太容易了
let url = URL(string: "http://www.youtube.com/watch?v=fDXWW5vX-64")
let request = URLRequest(url: url!)
webView?.load(request)
对于第一个建议的答案,我遇到了一些问题,比如整个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];