gpt4 book ai didi

ios - 如何使视频播放完毕后消失,以便用户可以继续使用该应用程序?

转载 作者:行者123 更新时间:2023-11-29 05:47:39 25 4
gpt4 key购买 nike

我编写了一些代码来在启动后播放视频,但是视频播放后,它不会返回 Storyboard,它只是卡在这个循环中,返回主板一秒钟然后黑屏(大概视频结束了)

在调试控制台中显示“2019-05-05 01:32:33.766132+0800 app[35989:1028569] [AVKit] 当全屏 View Controller 转换时,目标 View 应该是我们自己的 View !”

我尝试过一些方法,比如使用一些可以感知视频结束的东西,但这些都没有帮助。

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显示它

关于ios - 如何使视频播放完毕后消失,以便用户可以继续使用该应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55985209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com