我正试图通过UIWebView在应用中播放YouTube视频。我意识到这很容易,但视频会自动播放全屏。有没有办法播放它不是全屏,而且,当UIWebView的大小改变时,视频大小会改变吗?我正在寻找斯威夫特的答案。
我在this answer找到了一个可能的答案,但它是用Objective-C编写的,我觉得很难翻译。
答案 0 :(得分: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)
结果: