我在这里看到很多关于此问题的帖子,但仍然找不到解决这个问题的完美答案。
所以我有一个表视图,每个单元格内都有一个播放按钮。当用户点击播放按钮时,我会向该单元格添加一个UIWebView
,并播放YouTube视频。
static NSString *youTubeVideoHTML = @"<html>\
<body style=\"margin:0;\">\
<iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
</iframe>\
</body>\
</html>";
- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];
[self loadHTMLString:html baseURL:nil];
}
问题:
这段代码不能像我想的那样播放视频,它只是初始化了YouTube播放器并显示带有YouTube红色播放按钮的界面。只有当用户点击红色按钮后,视频才开始播放。因此,用户必须点击两个按钮才能开始播放视频 - 不是最好的用户体验...
就像我说的,我看到了许多关于这个问题的帖子,有些根本不起作用,有些虽然起作用但会出现一些问题,让我感到困扰。
我找到的一个可行的解决方案在这篇文章中,由@ilias提供,他展示了如何通过从文件(而不是像我所做的字符串)加载HTML来使其工作。但这种方法的问题在于对于我播放的每个视频,我都需要:
加载htm文件->将视频Id嵌入其中->将文件写入磁盘->现在才能播放视频。
奇怪的是,只有在从文件加载Web视图请求时,这个解决方案才有效,如果我尝试从与文件内容相等的字符串加载请求,则无法正常工作。