我是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];
谢谢, Abilash.G
答案 0 :(得分: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];
答案 1 :(得分:7)
@danh回答确实有效,但它将youtube的移动网页与youtube播放器嵌入,这需要占用大量空间而且看起来很糟糕。最好的选择是按照Youtube Api博客中的说明操作:
更新:由于youtube现在使用其api的v3,这里是一个带有官方指示的新链接:https://developers.google.com/youtube/v3/guides/ios_youtube_helper
答案 2 :(得分:4)
在iOS 8中,它开始以不同的方式工作,并在WebView中添加了填充。我发布了这个问题的答案,这适用于iOS 9和Xcode 7。填充(-8px)可能需要根据您的需要进行调整,但一般来说它的工作效果非常好。
您需要做的就是从任何YouTube视频中获取代码(任何YouTube视频网址中的最后一个字符)
以下是代码:
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"]];
答案 3 :(得分:2)
我在我的应用中使用了这个。这不使用任何webview
https://www.cocoacontrols.com/controls/hcyoutubeparser
或强>
NSURL *urlOfYouTube = [NSURL URLWithString:@"http://www.youtube.com..."];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:urlOfYouTube];
[self.webView loadRequest:requestObj];
答案 4 :(得分:2)
Google提供了一个帮助,可以在iOS应用中嵌入和控制YouTube视频。请查看此处的文档:https://developers.google.com/youtube/v3/guides/ios_youtube_helper
答案 5 :(得分:1)
//我的UIWebview被命名为&#34; videoYoutube&#34;在下面的这个例子中 // 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)
答案 6 :(得分:1)
在swift 4中太容易了
let url = URL(string: "http://www.youtube.com/watch?v=fDXWW5vX-64")
let request = URLRequest(url: url!)
webView?.load(request)
答案 7 :(得分: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];