YouTube嵌入式视频显示错误尺寸

时间:2017-06-08 09:42:07

标签: ios swift swift3 youtube uiwebview

我在UIWebView中嵌入了一个youtube视频,以便在我的应用中显示。

以下是代码:

func loadVideo(){
    if let youtubeCode = exerciseYoutubeCode {
        guard !youtubeCode.isEmpty else { return }
        exerciseVideoWebView.isHidden = false
        exerciseVideoWebView.allowsInlineMediaPlayback = true
        exerciseVideoWebView.scrollView.isScrollEnabled = false
        exerciseVideoWebView.scrollView.bounces = false
        exerciseVideoWebView.loadHTMLString("<html><head><style>body{margin:0px}</style></head><body><iframe width=\"\(exerciseVideoWebView.frame.width)\" height=\"\(exerciseVideoWebView.frame.height)\" src=\"https://www.youtube.com/embed/\(youtubeCode)?&playsinline=1\" frameborder=\"0\" allowfullscreen></iframe></body></html>",
                                            baseURL: nil)
    }
}

问题是嵌入的视频似乎不符合我传递给iframe的UIWebView的宽度和高度。在模拟器中,视频大约比UIWebView大15-25像素。我可以忍受,但是当在物理设备上运行时,它比UIWebView小15-25像素,在UIWebView的右侧和底部暴露HTML页面的白色。

UIWebView的自动约束比率为16:9,与YouTube的视频宽高比相匹配。

如果我将以下脚本放入HTML中,我可以看到视频iframe的宽度和高度与打印到UIWebView控制台的高度和宽度完全匹配:

<script>setTimeout(function(){
    alert(document.getElementsByTagName('iframe')[0].offsetWidth + ' ' + document.getElementsByTagName('iframe')[0].offsetHeight)},10000)
</script>

显然,如果HTML认为它与UIWebView的大小相同,则会发生某种扩展,但我无法弄清楚如何修复它。

0 个答案:

没有答案