您如何让视频在播放完毕后消失,以便用户可以继续使用该应用程序?
How do you make a video disappear after it finishes playing so the user could continue using the app?
我写了一些代码在启动后播放视频,但是视频播放后,它不会返回故事板,它只是卡在这个循环中,然后返回主板一秒钟变黑(可能是视频结束)
在调试控制台中显示“2019-05-05 01:32:33.766132+0800 app[35989:1028569] [AVKit] 当全屏视图控制器正在运行时,目标视图应该是我们自己的视图转换!"
我尝试过一些东西,比如让一些东西可以感知视频的结尾,但这些都没有帮助。
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
playVideo()
}
let playerController = AVPlayerViewController()
private func playVideo() {
guard let path = Bundle.main.path(forResource: "video", ofType:"m4v") else {
debugPrint("video.m4v not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
playerController.player = player
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerController.player?.currentItem)
playerController.showsPlaybackControls = false
present(playerController, animated: true) {
player.play()
}
}
@objc func playerDidFinishPlaying(note: NSNotification) {
playerController.dismiss(animated: true, completion: nil)
}
}
我希望视频在播放完毕后消失,以便用户可以看到应用程序的主屏幕。
这就是问题所在
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
playVideo()
}
playerVC 被关闭,之后 vc 出现并调用 viewDidAppear
所以它会再次显示播放器,考虑一次 bool
var once = true
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if once {
playVideo()
once = false
}
}
或者在viewDidLoad
中用DispatchAfter显示
我写了一些代码在启动后播放视频,但是视频播放后,它不会返回故事板,它只是卡在这个循环中,然后返回主板一秒钟变黑(可能是视频结束)
在调试控制台中显示“2019-05-05 01:32:33.766132+0800 app[35989:1028569] [AVKit] 当全屏视图控制器正在运行时,目标视图应该是我们自己的视图转换!"
我尝试过一些东西,比如让一些东西可以感知视频的结尾,但这些都没有帮助。
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
playVideo()
}
let playerController = AVPlayerViewController()
private func playVideo() {
guard let path = Bundle.main.path(forResource: "video", ofType:"m4v") else {
debugPrint("video.m4v not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
playerController.player = player
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerController.player?.currentItem)
playerController.showsPlaybackControls = false
present(playerController, animated: true) {
player.play()
}
}
@objc func playerDidFinishPlaying(note: NSNotification) {
playerController.dismiss(animated: true, completion: nil)
}
}
我希望视频在播放完毕后消失,以便用户可以看到应用程序的主屏幕。
这就是问题所在
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
playVideo()
}
playerVC 被关闭,之后 vc 出现并调用 viewDidAppear
所以它会再次显示播放器,考虑一次 bool
var once = true
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if once {
playVideo()
once = false
}
}
或者在viewDidLoad