我正在写一个音乐播放器应用程序使用苹果媒体播放器,并有一个按钮来改变音量和隐藏系统默认的音量覆盖.然而,我发现的所有方法都是基于UIKit.像
let volumeView = MPVolumeView(frame: .zero)
volumeView.clipsToBounds = true
volumeView.alpha = 0.00001
volumeView.showsVolumeSlider = false
view.addSubview(volumeView)
我试过了
import Foundation
import SwiftUI
import MediaPlayer
struct VolumeView:UIViewRepresentable{
let volumeView:MPVolumeView
func makeUIView(context: Context) -> MPVolumeView {
volumeView.clipsToBounds = true
volumeView.alpha = 0.00001
volumeView.showsVolumeSlider = false
return volumeView
}
func updateUIView(_ uiView: MPVolumeView, context: Context) {
}
typealias UIViewType = MPVolumeView
}
它接收我在视图模型中创建的MPVolumeView,并将其放置在swiftui视图中。指示器消失,但无法更改音量。然后我尝试在UIViewRepresentable中创建MPVolumeView的新示例,但也没有成功。我是swiftui的绿色,有人能帮助我吗?
1条答案
按热度按时间eufgjt7s1#
我也有同样的问题,你的例子帮助我弄清楚了,显然你就快到了。
这是SwiftUI中的一个完整的自定义音量滑块
MPVolumeView的示例似乎需要随时出现在屏幕上,即使它不可见。看起来有点笨拙,但可以工作。如果我只在
setVolume()
函数中隐藏视图,甚至在那里调用volumeView.showsVolumeSlider = false
,也不会有什么不同。希望它能帮助一些人,因为我刚刚在SO上发现了非工作示例。