我在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的大小相同,则会发生某种扩展,但我无法弄清楚如何修复它。