2014-06-27 17 views
12

Ich implementierte einen Video-Player mit MPMoviePlayer in meiner iPad-Anwendung, verwendete MPVolumeView zur Lautstärkeregelung. Mein Problem ist, dass, wenn ich die Volume-Ansicht scrollen, um die Lautstärke einzustellen, zeigt das Gerät die Lautstärke Hud Overlay wie im Screenshot unten.Gerät ausblenden Lautstärke HUD-Anzeige während der Lautstärkeeinstellung mit MPVolumeView-Schieberegler

enter image description here

Wie kann ich deaktivieren Sie diese Systemlautstärkeanzeige hud? Mein Code ist:

@property (weak, nonatomic) IBOutlet MPVolumeView *playbackMPVolumeView; 

//Customizing controller 
- (void)customizeVolumeController 
{ 
    _playbackMPVolumeView.showsRouteButton = YES; 
    _playbackMPVolumeView.showsVolumeSlider = YES; 
    [_playbackMPVolumeView setVolumeThumbImage:[UIImage imageNamed:@"volume_slider_thumb.png"] forState:UIControlStateNormal]; 
} 
+0

check this http://stackoverflow.com/questions/7868457/applicationmusicplayer-volume-notification –

+0

Eigentlich ist mein Volume-Schieberegler (als My Volume View Slider im Screenshot in der Frage angezeigt) mit MPVolumeView erstellt, die Steckdose namens playbackMPVolumeView im Code. [MPMusicPlayerController applicationMusicPlayer] (in dem Link erwähnt, den Sie in den obigen Kommentar eingefügt haben) kann nicht zum Festlegen von Volume verwendet werden, da es veraltet ist. Also, wenn ich den Frame für meine volumeView auf rectZero setze, wird es keinen Schieberegler für mich geben. – Alexi

Antwort

4
- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 
    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero]; 
    [self.view addSubview: volumeView]; 
    ... 
} 

dieses refrence genommen von applicationMusicPlayer volume notification

5

Hier ist eine Lösung

CGRect frame = CGRectMake(-1000, -1000, 100, 100); 
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:frame]; 
[volumeView sizeToFit]; 
[self.view addSubview:volumeView]; 
+0

Super Lösung! – Genevios

0

diese Zeilen Fügen Sie einfach, wo Sie Ihre MPVolumeView Instanz sichtbar machen . Zum Beispiel: Falls Sie eine Toggle-Lautstärke-Taste

-(void)toggle 
{ 
    self.volumeView.hidden = !self.volumeView.hidden; 
    [self.volumeView willMoveToSuperview:self.volumeView.superview]; 
    [self.volumeView didMoveToSuperview]; 
} 

Falls Sie ein immer sichtbaren Lautstärkeregler (Instanz MPVolumeView).

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    self.volumeView.hidden = NO; 
    [self.volumeView willMoveToSuperview:self.volumeView.superview]; 
    [self.volumeView didMoveToSuperview]; 

} 
0

Unten Code funktioniert für mich abgesehen von Hinzufügen von MPVolumeView als Subview.

AudioSessionInitialize(NULL, NULL, NULL, NULL); 
AudioSessionSetActive(YES); 
0

Hier ist die obige Lösung in Swift. Arbeitet mit Swift 2-3.

let frame = CGRect(x: -1000, y: -1000, width: 100, height: 100) 
let volumeView = MPVolumeView(frame: frame) 
volumeView.sizeToFit() 
self.view!.addSubview(volumeView) 
0

Das funktioniert für mich.

MPVolumeView *volumeView2 = [[MPVolumeView alloc] initWithFrame:CGRectMake(-28, -2, 24, 24)]; 
[self.view addSubview:volumeView2]; 
volumeView2.showsVolumeSlider = true; 
volumeView2.showsRouteButton = false; 
_videoPlayer.AllowsAirPlay = false; 
6

Swift 3

let volumeView = MPVolumeView(frame: .zero) 
view.addSubview(volumeView) 
2

AppDelegate:

self.window?.insertSubview(MPVolumeView(), at: 0) 
0

Dies ist, was für mich tatsächlich funktioniert, wenn aus irgendeinem Grund die CGRect CGRect.zero ist dann, wenn es eine ist Button in der oberen linken Ecke in wird nicht funktionieren ..., so dass dieser funktioniert:

0

Die beste Lösung, die ich mit für kam Swift 4

import MediaPlayer 

Fügen Sie diese 3 Zeilen Code

let volumeView = MPVolumeView(frame: .zero) 
    volumeView.clipsToBounds = true 
    view.addSubview(volumeView) 
0

Ich hatte folgendes zu tun, um die Lautstärke Overlay zu deaktivieren:

AppDeletage.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 

    // disable volume hud 
    CGRect rect = CGRectMake(-500, -500, 0, 0); 
    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect]; 
    [self.window addSubview:volumeView]; 
    return YES; 
} 

AppDelegieren.h:

@interface AppDelegate : UIResponder <UIApplicationDelegate> 

... 
@property (nonatomic, strong) MPVolumeView * volumeView; 

@end 

Nur Ziel C, kein Swift. Funktioniert mit iOS 8.1+ (nicht getestete frühere Versionen). Ich fügte hinzu, dass ich darum kämpfte, dies basierend auf den gegebenen Antworten ohne Kontext zu implementieren.