2015-03-25 123 views
1

我試圖通過UIWebView在應用中播放YouTube視頻。我意識到這很容易,但視頻會自動播放全屏。有沒有辦法播放它不是全屏,而且,當UIWebView的大小改變時,視頻大小會改變?我正在Swift中尋找答案。在iOS應用中播放嵌入的YouTube視頻,而不是全屏

我在this answer找到了一個可能的答案,但是它是用Objective-C編寫的,我發現它很難翻譯。

回答

0

要回答您的第一個問題,每當UIWebView更改大小時,iFrame播放器都會重新加載。你不能改變這一點。

至於設置,你要在運行時動態獲取設備的寬度和高度,並將它們傳遞給你的UIWebView和玩家構造函數。這將播放視頻「inLine」,但全屏。將所需的任何寬度和高度值傳遞給構造函數,以允許inLine播放,而無需將視頻彈出至全屏播放器。

let webView = UIWebView(frame: self.view.frame) 

self.view.addSubview(webView) 
self.view.bringSubviewToFront(webView) 

webView.allowsInlineMediaPlayback = true 
webView.mediaPlaybackRequiresUserAction = false 

let videoID = "zN-GGeNPQEg" // https://www.youtube.com/watch?v=zN-GGeNPQEg 

let embededHTML = "<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='\(self.view.frame.size.width)' height='\(self.view.frame.size.height)' src='http://www.youtube.com/embed/\(videoID)?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'></body></html>" 

webView.loadHTMLString(embededHTML, baseURL: NSBundle.mainBundle().resourceURL) 

結果:

enter image description here

+0

嘿,我能問你問題嗎? 你如何控制webview的標題 - 這是:public image Ltd - ? 在我的應用程序中,當youtube在全屏模式下,屏幕的標題是如此奇怪:S它:Playback_controls_view_controller !!!爲什麼?@ _ @ ?! – Rawan 2015-12-14 13:23:33

+0

@Rawan你應該問一個新問題。 – JAL 2015-12-14 15:05:52

+0

我已經做了http://stackoverflow.com/q/34268267/4498576 – Rawan 2015-12-14 15:07:34

相關問題