一,代码:
import SwiftUI
import AVFoundation
struct Mp3View: View {
// 1. 创建一个持久化的播放器实例
@State private var player: AVPlayer?
let mp3Url = "https://hanyu-poem-voice.cdn.bcebos.com/man/38a52978fb6f4cfd8bcc25fc2db2c0fa.mp3" // 替换为真实的在线MP3地址
var body: some View {
VStack(spacing: 20) {
Button(action: {
playAudio(url: mp3Url)
}) {
Label("播放音乐", systemImage: "play.circle.fill")
.font(.title)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
Button(action: {
player?.pause()
}) {
Label("暂停", systemImage: "pause.circle.fill")
.font(.title)
.padding()
.background(Color.blue)
.foregroundColor(.red)
.cornerRadius(10)
}
}
}
// 2. 播放逻辑
func playAudio(url: String) {
guard let url = URL(string: url) else { return }
// 如果播放器不存在,则初始化;如果已存在,直接播放
if player == nil {
player = AVPlayer(url: url)
}
player?.play()
}
}
二,运行效果:
![image]()