我在这里看到了很多关于这个问题的帖子,但仍然找不到这个问题的完美答案。
所以我有一个表格视图,每个单元格里面都有一个播放按钮。当用户点击播放按钮时,我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 视图请求时才有效,如果我尝试从等于文件内容的字符串加载请求,则不起作用。