For Swift 4, the updated code should look like this. Also do not forget to remove the observer - always
override func viewDidLoad() {
super.viewDidLoad()
var volumeView = UISlider(frame: CGRect(x:0,y:0,width:300,height:50))
volumeView.tag = 100
self.view.addSubview(volumeView)
NotificationCenter.default.addObserver(self, selector: #selector(NowPlayingViewController.volumeChanged(_:)), name: NSNotification.Name("AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
}
@objc func volumeChanged(notification: NSNotification) {
let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"] as! Float
print("Volume value:\(volume)")
let volumeView = self.view.viewWithTag(100) as! UISlider
volumeView.value = volume
}
deinit {
NotificationCenter.default.removeObserver(self,
name: Notification.Name("AVSystemController_SystemVolumeDidChangeNotification"),
object: nil)
}
source
share