// // VolumeView.swift // LeCountdown // // Created by Laurent Morvillier on 08/03/2023. // import SwiftUI import MediaPlayer import UIKit struct VolumeView: UIViewRepresentable { var changeVolume: Bool init(changeVolume: Bool = false) { self.changeVolume = changeVolume } func makeUIView(context: Context) -> MPVolumeView { let volumeView = MPVolumeView(frame: .zero) // volumeView.isHidden = self.changeVolume if self.changeVolume { self._setVolume(volumeView: volumeView) } return volumeView } func updateUIView(_ view: MPVolumeView, context: Context) { // Logger.log("update volume view") if self.changeVolume { self._setVolume(volumeView: view) } } fileprivate func _setVolume(volumeView: MPVolumeView) { if let slider = volumeView.subviews.first(where: { $0 is UISlider }) as? UISlider { DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1) { Logger.log("update volume view to \(Preferences.defaultVolume)") slider.setValue(Preferences.defaultVolume, animated: false) } } } } struct VolumeView_Previews: PreviewProvider { static var previews: some View { VolumeView() } }