15

このコードを使用して、iOS で YouTube 動画を再生しています

- (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];
}

それは魅力のように機能しますが、別の動作が必要です。ビデオのサムネイルが webview に表示されるようになりました (いいですね!) が、再生アイコンをタップするとフルスクリーンで開きます。より多くのものを表示する必要があるため、同じウィンドウで再生を行う必要があります。

それを作る方法の手がかりはありますか?事前に感謝します

4

2 に答える 2

28

誰かがまだこの問題に直面している場合、以下は私が見た中で群を抜いて最良の解決策です. 魅力のように機能します。

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

于 2013-10-17T17:07:57.573 に答える
0

スウィフトの場合:

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!)
于 2016-04-14T09:45:35.020 に答える