Как встраивать видео YouTube в iOS и воспроизводить его прямо в UIWebview без полноэкранного режима

Я использую этот код для воспроизведения видео YouTube на iOS

- (void)embedYouTube:(NSString *)urlString frame:(CGRect)frame
{
NSString *htmlString = [NSString stringWithFormat:@"<html><head><meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = yes, width = 320\"/></head><body style=\"background:#00;margin-top:0px;margin-left:0px\"><div><object width=\"320\" height=\"180\"><param name=\"movie\" value=\"http://www.youtube.com/v/%@&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.youtube.com/v/%@&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"320\" height=\"180\"></embed></object></div></body></html>", urlString, urlString];

UIWebView *videoView = [[UIWebView alloc] initWithFrame:frame];
[videoView loadHTMLString:htmlString baseURL:nil];
[self.view addSubview:videoView];
[videoView release];

}

Он работает как шарм, но мне нужно другое поведение. Теперь миниатюра видео появляется на веб-просмотре (приятно!), Но когда я нажимаю значок воспроизведения, он открывается в полноэкранном режиме. Мне нужно, чтобы воспроизведение выполнялось в том же окне, так как мне нужно показать больше вещей.

Любой ключ к тому, как это сделать? Thansk заранее

Ответы

Ответ 1

Если кто-то все еще сталкивается с этой проблемой, ниже, безусловно, лучшее решение, которое я видел. Работает как шарм.

self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10,300, 200)];
        [self.webView setAllowsInlineMediaPlayback:YES];
        [self.webView setMediaPlaybackRequiresUserAction:NO];

        [self.view addSubview:self.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='%d' height='%d' src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>\
                                    </body>\
                               </html>", 300, 200, @"JW5meKfy3fY"];
        [self.webView loadHTMLString:embedHTML baseURL:[[NSBundle mainBundle] resourceURL]];

Источник: https://code.google.com/p/gdata-issues/issues/detail?id=5204

Ответ 2

В Swift:

let webView = UIWebView(frame:CGRectMake(10, 10,300, 200))
    webView.allowsInlineMediaPlayback = true
    webView.mediaPlaybackRequiresUserAction = false
    self.view.addSubview(self.webView)

    let embedHTML = "<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='300' height='200' src='http://www.youtube.com/embed/JW5meKfy323?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>"
    "        </body>"
    "</html>"
    webView.loadHTMLString(embedHTML, baseURL:NSBundle.mainBundle().resourceURL!)