相关疑难解决方法(0)

如何在 SwiftUI 中控制 AVPlayer?

在我的新 SwiftUI 项目中,我有一个用于从 url 流式传输音乐的 AVPlayer。现在我需要通过滑块控制播放曲目的当前时间和音量,这是设计的一部分:

在此处输入图片说明

现在我可以使用 UserData 最终类及其 @Published 变量来控制播放器,例如isPlaying

final class UserData: ObservableObject {
    // ...
    @Published var player: AVPlayer? = nil
    @Published var isPlaying: Bool = false
    //...

    func playPausePlayer(withSong song: Song, forPlaylist playlist: [Song]?) {
        //...
        if isPlaying {
            player?.pause()
        } else {
            player?.play()
        }

        isPlaying.toggle()
    }

}

Run Code Online (Sandbox Code Playgroud)

很高兴知道这部分是否有更好的决定

问题是属性currentTimeduration我只能从playeror 中获取player?.currentItem,所以我不能像这样制作滑块:

@EnvironmentObject var userData: UserData
// ...
Slider(value: userData.player?.currentItem?.currentTime()!, in: 0...userData.player?.currentItem?.duration as! Double, step: 1)
Run Code Online (Sandbox Code Playgroud)

我怎样才能控制这些事情?

binding avplayer swiftui

2
推荐指数
1
解决办法
2826
查看次数

标签 统计

avplayer ×1

binding ×1

swiftui ×1