2016-07-31 19 views
0

Ich benutze MPVolumeView, um einen horizontalen Schieberegler zu generieren, der es mir ermöglicht, die Lautstärke des abgespielten Audios zu verwalten. Es funktioniert großartig. Jedoch bei der Initialisierung, möchte ich den Regler die Position auf das Volumen der Vorrichtung entspricht nimmt und nicht mehr als 0,5, der Standard:Set MPVolumeView Schieberegler Daumenposition als Gerät Lautstärke

enter image description here enter image description here

Hier ist der Code, den ich getan habe:

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) 
} 

Antwort

1

Weisen Sie die value Ihres Schiebereglers zu AVAudioSession.sharedInstance().outputVolume auf init oder in viewDidLoad Ihres View-Controllers zu. Denken Sie daran, import AVFoundationAVAudioSession zu verwenden.

Alternativ können Sie Ihre MPVolumeView programmatisch initialisieren, anstatt sie als Steckdose zu verwenden. Ich glaube, das ist die Ursache Ihres Problems.

+0

Vielen Dank für Ihre Antwort, aber das funktioniert nicht – Zl3n

+0

@ Zl3n Was funktioniert nicht? Passt das 'outputVolume' nicht zum aktuellen Gerät? – JAL

+0

Wenn ich 'mpVolumeSlider? .setValue (0.1, animiert: true)', in die Funktion oder in 'init()' mache, tut das nichts ... Das Geräte-Volume bleibt jedoch modifiziert. – Zl3n