У меня есть wkWebView, где через скриптAPI я загружаю видео и проигрываю его. Есть два вопроса.
1) Когда видео загружается, оно очень маленькое, а при воспроизведении становится полноэкранным. Как сразу сделать его полноэкранным?
2) Как я могу автоматически переключиться на другой в конце контроллера просмотра видео?
@IBOutlet weak var backgroundView: UIView!
var webView: WKWebView!
var videoURL:URL!
var didLoadVideo = false
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if !didLoadVideo {
webView.loadHTMLString(embedVideoHtml, baseURL: nil)
didLoadVideo = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
setupWebView()
videoURL = URL(string: "https://www.youtube.com/embed/kBVxMvATaFU")
}
func setupWebView() {
let webConfiguration = WKWebViewConfiguration()
if #available(iOS 10.0, *) {
webConfiguration.mediaTypesRequiringUserActionForPlayback = []
} else {
// Fallback on earlier versions
webConfiguration.mediaPlaybackRequiresUserAction = false
}
webConfiguration.allowsInlineMediaPlayback = true
webView = WKWebView(frame: CGRect(x: 0, y: 0, width: backgroundView.frame.width, height: backgroundView.frame.height), configuration: webConfiguration)
webView.uiDelegate = self
self.backgroundView.addSubview(webView)
}
var embedVideoHtml:String {
return """
<!DOCTYPE html>
<html>
<body>
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
playerVars: { 'autoplay': 1, 'controls': 2, 'playsinline': 0 , 'frameborder': 0},
height: '\(webView.frame.width)',
width: '\(webView.frame.height)',
videoId: '\(videoURL.lastPathComponent)',
events: {
'onReady': onPlayerReady
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
//I try to stop the video after 6 seconds, but it doesn’t work!
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>
"""
}