使用MPVolumeView滑块调整音量时隐藏设备音量HUD视图

Ale*_*ews 15 objective-c ios mpvolumeview

我在我的iPad应用程序中使用MPMoviePlayer实现了一个视频播放器,使用MPVolumeView进行音量控制.我的问题是,当我滚动音量视图调整音量时,显示设备的音量hud叠加,如下面的屏幕截图所示.

在此输入图像描述

如何禁用此系统音量指示器hud?我的代码是:

@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];
}
Run Code Online (Sandbox Code Playgroud)

dim*_*mdy 10

斯威夫特3

let volumeView = MPVolumeView(frame: .zero)
view.addSubview(volumeView)
Run Code Online (Sandbox Code Playgroud)


Har*_*kar 6

这是一个解决方案

CGRect frame = CGRectMake(-1000, -1000, 100, 100);
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:frame];
[volumeView sizeToFit];
[self.view addSubview:volumeView];
Run Code Online (Sandbox Code Playgroud)


Vit*_*y A 6

如果您想在所有应用程序屏幕上隐藏 HUD,请使用以下通用代码:

static let mpVolumeView = MPVolumeView()
static func setupHiddenMPVolume(_ view: UIView){
    if let app = UIApplication.shared.delegate as? AppDelegate, let window = app.window {
        mpVolumeView.alpha = 0.000001
        window.addSubview(mpVolumeView)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您在某个时候需要显示 Volume HUD,只需将其从 app.window 中删除。享受 :-)

  • 至少对我来说,这是正确的解决方案。上面的那个,在每个屏幕上隐藏音量视图,导致应用程序性能下降的问题,直到在视图之间来回切换大约 15 次迭代后完全没有响应。其他解决方案中的 MPVolumeView 似乎必须以某种方式“发布”。 (2认同)

Sou*_*rma 5

- (void) viewDidLoad 
{
    [super viewDidLoad];
    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
    [self.view addSubview: volumeView];
    ...
}
Run Code Online (Sandbox Code Playgroud)

applicationMusicPlayer音量通知中获取了此参考