WKWebview。在应用程序中点击按钮,直接播放嵌入的Youtube视频。

问题描述 投票:0回答:1

在我的应用程序中,我的UIImageView(headerView)上覆盖了一个播放按钮。当用户点击这个按钮后,我想在这个UIImageView的框架内直接显示一个嵌入的Youtube视频。然而,首先我的Youtube视频不能自动播放,其次尺寸太小。我到底做错了什么?我一直在搜索所有可能的答案,并且尝试了所有的方法。或者是模拟器的问题?下面是我的代码,它是由点击播放按钮触发的。

NSString *videoIdentifier = @"EXaEz0mJXWY";

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.headerView.bounds];
[webView.configuration setAllowsInlineMediaPlayback:YES];
[webView.configuration setMediaTypesRequiringUserActionForPlayback:WKAudiovisualMediaTypeNone];
[self.headerView addSubview:webView];

NSString* embedHTML = [NSString stringWithFormat:@"\
                       <html>\
                            <body style='margin:0px;padding:0px;'>\
                                <script type='text/javascript' src='http://www.youtube.com/iframe_api'></script>\
                                <script type='text/javascript'>\
                                    function onYouTubeIframeAPIReady() \
                                    {\
                                        ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})\
                                    }\
                                    function onPlayerReady(a)\
                                    { \
                                        a.target.playVideo(); \
                                    }\
                                </script>\
                       <iframe id='playerId' type='text/html' width='%0.0f' height='%0.0f' src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>\
                            </body>\
                       </html>", webView.frame.size.width, webView.frame.size.height, videoIdentifier];

//NSLog(@"Embeddedhtml: %@", embedHTML);
[webView loadHTMLString:embedHTML baseURL:[[NSBundle mainBundle] resourceURL]];
objective-c wkwebview youtube-iframe-api
1个回答
1
投票

我的Youtube视频不能自动播放

你必须初始化 WKWebViewconfiguration 参数。之后更改配置没有效果。

WKWebViewConfiguration* config = [[WKWebViewConfiguration alloc] init];
[config setAllowsInlineMediaPlayback:YES];
[config setMediaTypesRequiringUserActionForPlayback:WKAudiovisualMediaTypeNone];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.headerView.bounds configuration:config];

尺寸太小

WKWebView 是使用实际的设备像素进行测量,并使用一些启发式的默认缩放,而 UIKit 则以点为单位返回宽度和高度。简单的修复方法是添加 视口元 到页面。

<head>
<meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
© www.soinside.com 2019 - 2024. All rights reserved.