有人可以告诉我为什么在第9行出现错误,无法推断出通用参数'Label'
struct PlayerControlsView : View {
@State var playerPaused = true
@State var seekPos = 0.0
let player: AVPlayer
var body: some View {
HStack {
Button(action: {
self.playerPaused.toggle()
if self.playerPaused {
self.player.pause()
}
else {
self.player.play()
}
}) {
Image(systemName: playerPaused ? "play" : "pause")
.padding(.leading, CGFloat(20))
.padding(.trailing, CGFloat(20))
}
Slider(value: $seekPos, from: 0, through: 1, onEditingChanged: { _ in
guard let item = self.player.currentItem else {
return
}
let targetTime = self.seekPos * item.duration.seconds
self.player.seek(to: CMTime(seconds: targetTime, preferredTimescale: 600))
})
.padding(.trailing, CGFloat(20))
}
}
}
当然还有解决方法。
答案 0 :(得分:0)
您的Slider
初始化不正确。没有包含from:
和through:
的版本。不过in: [0...1]
是默认设置,因此您还是不需要它。
Slider(value: $seekPos, onEditingChanged: { _ in
SwiftUI错误消息通常是无用的。发现错误的方法是继续注释掉所有内容,直到编译为止,然后再将它们重新添加。
但是,您在此处执行的操作无法正常工作。您不能将AVPlayer
放在View
内。 View
是一个结构,它们始终被创建,复制和销毁。参见How to stream remote audio in iOS 13? (SwiftUI)。