iOS音量控制相关代码

时间:2022-06-01 16:42:04

隐藏系统的音量控件

隐藏系统的音量控件的办法是,从iOS系统获取音量控件,然后让它不可见,代码如下:

import UIKit
import MediaPlayer

class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()

    let volumeView = MPVolumeView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))

    volumeView.isHidden = false
    volumeView.alpha = 0.01

    view.addSubview(volumeView)
  }
}

这个代码只能在设备上测试,不能再模拟器测试。

获取音量的值

从iOS 9.0开始,获取音量的值很简单:

AVAudioSession.sharedInstance().outputVolume

响应音量改变

我们可以使用名为AVSystemController_SystemVolumeDidChangeNotification的通知来响应音量的改变,代码如下:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  NotificationCenter.default.addObserver(self, selector: Selector(("volumeDidChange:")), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
  return true
}

 func volumeDidChange(notification: NSNotification) {
   let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"] as! Float

   // 处理音量改变的业务

 }

详情可以查看:PVolumeView