Mat*_*ios 1 embed video inline wkwebview swift4
所以根据苹果的文档:https : //developer.apple.com/documentation/webkit/wkwebviewconfiguration/1614793-allowsinlinemediaplayback
我应该能够使用 Swift 4 轻松地在线播放视频,但无论我做什么,它总是会在本机视频播放器中打开视频。
这是我的代码:
convenience init(style: UITableViewCell.CellStyle, reuseIdentifier: String?, url: String = "", title: String) {
self.init(style: style, reuseIdentifier: reuseIdentifier)
self.videoTitleLabel.text = title
self.urlToVideo = url
setUpUI()
setUpLayout()
webView.backgroundColor = .smalt
webView.translatesAutoresizingMaskIntoConstraints = false
webView.configuration.allowsInlineMediaPlayback = true
webView.configuration.preferences.javaScriptEnabled = true
webView.load(URLRequest(url: URL(string: self.urlToVideo + "?playsinline")! ))
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
通过查看人们报告的其他一些问题以及 Apple 文档中的详细信息,我认为问题在于必须在创建 WKWebView 之前设置 WKWebViewConfiguration。
从苹果文档:
使用 WKWebViewConfiguration 类,您可以确定网页的呈现速度、媒体播放的处理方式、用户可以选择的项目的粒度以及许多其他选项。
WKWebViewConfiguration 仅在首次初始化 Web 视图时使用。创建后,您不能使用此类更改 Web 视图的配置。
这与苹果提供的使用 WKWebView ( https://developer.apple.com/documentation/webkit/wkwebview )的示例一致,您可以在其中看到 WKWebViewConfiguration 被传递给 WKWebView 设置。我已经在 playsinline 中添加了作为您案例的示例。
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback = true //** Added as an example for your case
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string:"https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}}
Run Code Online (Sandbox Code Playgroud)
如果随后无法设置该属性以避免这种混淆,这似乎更有意义,但从文档中可以看出这是它的工作原理。