将 MPVolumeView 滑块拇指位置设置为设备音量

Posted

技术标签:

【中文标题】将 MPVolumeView 滑块拇指位置设置为设备音量【英文标题】:Set MPVolumeView slider thumb position as device volume 【发布时间】:2016-07-31 09:36:58 【问题描述】:

我使用MPVolumeView 生成一个水平滑块,它允许我管理正在播放的音频的音量。它工作得很好。但是,在初始化时,我希望滑块占据与设备音量相对应的位置,而不是 0.5,默认值:

这是我做的代码:

func volumeSlider() 

    let parentVolumeView = MPVolumeView(frame: volumeParentView.bounds)

    for view in parentVolumeView.subviews 
        if (view as UIView).description.rangeOfString("MPVolumeSlider") != nil 
            mpVolumeSlider = view as! UISlider
            print("mpVolumeSlider.value : ", mpVolumeSlider.value)

            // Tried to set mpVolumeSlider.value to volume device, but didn't work, show : 0.0
            // mpVolumeSlider.value = AVAudiosession.sharedInstance().outputVolume
        
        // Remove device volume indicator
        self.view!.addSubview(parentVolumeView)
    

    let thumbImage = UIImage(named: "slider-image")
    slider?.setThumbImage(thumbImage, forState: .Normal)

【问题讨论】:

【参考方案1】:

将滑块的 value 分配给视图控制器的 initviewDidLoad 上的 AVAudioSession.sharedInstance().outputVolume。记得import AVFoundation使用AVAudioSession

或者,您可以以编程方式初始化您的MPVolumeView,而不是将其作为插座。我相信这是您问题的根源。

【讨论】:

@Zl3n 什么不起作用? outputVolume 是否与当前设备的音量不匹配? 当我做mpVolumeSlider ?.setValue(0.1, animated: true),进入函数或进入init(),这没有任何作用......但是设备音量不断修改。 你没有使用outputVolume。你在viewDidLoad 上尝试过mpVolumeSlider?.setValue(AVAudioSession.sharedInstance().outputVolume, animated: true) 吗? @Zl3n 是否需要使用 Interface Builder? MPVolumeView 应该会自动调整到系统音量。如果您以编程方式初始化 MPVolumeView 而不是将其作为插座会发生什么?

以上是关于将 MPVolumeView 滑块拇指位置设置为设备音量的主要内容,如果未能解决你的问题,请参考以下文章

匹配 UIToolBar 中的 MPVolumeView 和 UISlider 垂直位置

UWP Slider 的动画拇指

更改 MPVolumeView 的滑块

滑块上的拇指不动

更改滑块上拇指图像的位置

如何获取 UISlider 拇指位置