SwiftUI「Volume」の音量調整をMPVolumeView化、valueChangedをCoodinator実装
SwiftUI「Volume」の音量調整をMPVolumeView化
valueChangedをCoodinator実装
import MediaPlayer import SwiftUI struct UIKitMPVolumeView: UIViewRepresentable { typealias UIViewType = MPVolumeView @Binding var volume: Float let view: MPVolumeView = MPVolumeView() func makeUIView(context: Context) -> MPVolumeView { view.setVolumeThumbImage(UIImage(named: "volume"), for: .normal) if let uislider = getUISlider() { volume = uislider.value uislider.addTarget(context.coordinator, action: #selector(Coordinator.updateVolume(sender:)), for: .valueChanged) } return view } func updateUIView(_ uiView: MPVolumeView, context: Context) { } func makeCoordinator() -> Coordinator { Coordinator(self) } func getVolume() -> Float { var volume: Float = 0.0 if let uislider = getUISlider() { print(uislider.value) volume = uislider.value } return volume } func getUISlider() -> UISlider? { var uislider: UISlider? = nil for subview in view.subviews { if let slider = subview as? UISlider { uislider = slider } } return uislider } class Coordinator { var parent: UIKitMPVolumeView init(_ parent: UIKitMPVolumeView) { self.parent = parent } @objc func updateVolume(sender: UISlider) { print(#function) parent.volume = sender.value print(parent.volume) } } }
Git Hub
https://github.com/cloudsquare22/VolumeSwiftUI