2013-04-08 24 views
15

Tôi đang sử dụng mã này để chơi video YouTube trên iOSLàm thế nào để nhúng video YouTube trên iOS và chơi nó trực tiếp trên UIWebView mà không toàn màn hình

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

} 

Nó hoạt động như sự quyến rũ nhưng tôi muốn có một hành vi khác nhau. Giờ đây, hình thu nhỏ của video xuất hiện trên chế độ xem web (tốt đẹp!) Nhưng khi tôi nhấn vào biểu tượng phát, nó sẽ mở ra toàn màn hình. Tôi cần phát lại được thực hiện trong cùng một cửa sổ vì tôi cần hiển thị nhiều nội dung hơn.

Bất kỳ đầu mối nào về cách thực hiện điều đó? Thansk trước

Trả lời

27

Nếu bất kỳ ai vẫn gặp phải vấn đề này, dưới đây là giải pháp tốt nhất mà tôi từng thấy. Làm việc như một say mê.

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

Nguồn: https://code.google.com/p/gdata-issues/issues/detail?id=5204

+1

cách nào để có được xung quanh thực tế là video được cấp phép âm nhạc không thể được chơi? – user3781236

+0

bạn có thể thêm câu trả lời nhanh chóng không? – huddie96

+0

Có thể sử dụng NSString thay vì @ "nhúng video" trực tiếp không? Tôi có nghĩa là một NSString từ xem khác, ví dụ từ plist? – Markus

0

Trong 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!) 
Các vấn đề liên quan