【问题标题】:Play embedded YouTube video in iOS app, not full screen在 iOS 应用程序中播放嵌入的 YouTube 视频,而不是全屏
【发布时间】:2015-05-28 13:11:16
【问题描述】:

我正在尝试通过 UIWebView 在应用中播放 YouTube 视频。我意识到这很容易,但视频会自动全屏播放。有没有办法不全屏播放,此外,当 UIWebView 的大小改变时,视频大小也会改变?我正在 Swift 中寻找答案。

我在 this answer 找到了可能的答案,但它是用 Objective-C 编写的,我发现翻译起来相当困难。

【问题讨论】:

    标签: ios swift youtube uiwebview youtube-api


    【解决方案1】:

    回答您的第一个问题,每次 UIWebView 更改大小时,iFrame 播放器都会重新加载。你无法改变它。

    至于设置,您将希望在运行时动态获取设备的宽度和高度,并将它们传递给您的 UIWebView 和播放器构造函数。这将播放视频“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)
    

    结果:

    【讨论】:

    • 嘿,我可以问你问题吗?您如何控制 webview 的标题 - 即:public image Ltd -?在我的应用程序中,当 youtube 全屏嵌入时,屏幕的标题很奇怪:S 它的:Playback_controls_view_controller !!! @_@ 为什么?!
    • @Rawan 你应该问一个新问题。
    • 设置宽度和高度对我没有帮助......还有其他想法吗?
    猜你喜欢
    • 2014-04-21
    • 2017-01-14
    • 1970-01-01
    • 2014-10-28
    • 2012-08-14
    • 2017-02-22
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多