swift - 在 AVQueuePlayer 中播放完最后一项后如何显示工作表视图?
问题描述
我正在使用 播放一系列视频AVQueuePlayer
,但是在最后一个视频之后,我看到AVQueuePlayer
在没有剩余视频的情况下尝试播放下一个视频。我想要做的是在最后一个项目完成播放后切换一个布尔值以显示工作表视图。你能帮我解决这个问题吗?感谢您的关注。我期待着您的回复。这是我的代码:
`struct Button : View {
@Binding var player : AVQueuePlayer
@Binding var isplaying : Bool
@State var showEnd = false
var removal: (() -> Void)? = nil
var body : some View {
Button(action: {
self.player.advanceToNextItem()
}) {
Image(systemName: self.isplaying ? "pause.fill" : "play.fill")
.font(.title)
.foregroundColor(.black)
.padding(20)
}
}
}
struct VideoPlayerS : UIViewControllerRepresentable {
@State var showEnd = false
var work : WorkoutDeS
@Binding var player : AVQueuePlayer
var playerLayer = AVPlayerLayer()
public func makeUIViewController(context: Context) -> AVPlayerViewController {
let items = [
AVPlayerItem(url: URL(fileURLWithPath: String(work.url1))),
AVPlayerItem(url: URL(fileURLWithPath: String(work.url2)))
]
let player = AVQueuePlayer(items: items)
let controller = AVPlayerViewController()
DispatchQueue.main.async {
self.player = player
}
controller.player = player
controller.videoGravity = .resizeAspectFill
player.actionAtItemEnd = .none
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player.currentItem, queue: .main) { _ in
self.player.seek(to: CMTime.zero)
self.player.play()
}
player.play()
return controller
}`
解决方案
在队列玩家的currentItem
. 当调用观察者方法并且播放器中没有项目时,它已经播放了最后一个项目。
推荐阅读
- java - 如何使用 Picasso 将 Firebase 中的图像显示到 RecyclerView
- java - 是否可以在弹出窗口中使用 ActionBar
- java - 为什么即使代码中没有显示错误,我也不能执行命令?(龙头)
- django - Django 管理模板覆盖不适用于托管
- domain-driven-design - 执行在聚合根集合上运行的业务规则
- f# - LiveCharts LabelFormatter 的 Elmish.Wpf 绑定
- sql - 未使用 SQL 作业处理 SSAS 表格模型
- r - Can you extract defective rows using AssertR in R?
- .htaccess - 301重定向我网站中的任何网址
- magento - Magento 上的自定义打印块