You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LeCountdown/LeCountdown/Views/Reusable/VolumeView.swift

60 lines
1.4 KiB

//
// 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) {
guard Preferences.raiseSoundOnLaunch else {
return
}
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()
}
}