applicationMusicPlayer音量通知
我正在使用applicationMusicPlayer,当我尝试更改音量时出现可视通知,如图所示。 这里我正在使用的代码:
[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolune];
任何人都知道如何隐藏这个通知?
我不知道文档所在的位置,但是如果将MPVolumeView
视图添加到您的应用程序,则系统音量叠加层将消失。 即使它不可见:
- (void) viewDidLoad { [super viewDidLoad]; MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero]; [self.view addSubview: volumeView]; [volumeView release]; ... }
您可以使用硬件音量button, setVolume
方法或直接与控件(如果可见)进行交互,而不会显示叠加层。
对于iOS6,我不得不将alpha 0和非零大小的图像设置到MPVolumeView
的图像域,以使默认音量更改通知消失。
// hide the hardware volume slider UIImage *thumb = [[UIImage alloc] initWithCIImage:[UIImage imageNamed:@"volumeHider"].CIImage scale:0.0 orientation:UIImageOrientationUp]; MPVolumeView *hwVolume = [[MPVolumeView alloc] initWithFrame:self.frame]; [hwVolume setUserInteractionEnabled:NO]; hwVolume.showsRouteButton = NO; [hwVolume setVolumeThumbImage:thumb forState:UIControlStateNormal]; [hwVolume setMinimumVolumeSliderImage:thumb forState:UIControlStateNormal]; [hwVolume setMaximumVolumeSliderImage:thumb forState:UIControlStateNormal]; [self addSubview:hwVolume];
这使得MPVolumeView
在屏幕上“可见”,但对用户不可见。
我最近遇到了同样的问题。 将MPVolumeView添加到当前视图控制器的视图中,而不是将其添加到应用程序的窗口,在应用程序的开始处:
CGRect rect = CGRectMake(-500, -500, 0, 0); MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect]; [self.window addSubview:volumeView];
这适用于iOS 7和8。
我在iOS 6中获得了成功。虽然它不会很好。 滑动thumbImage时,会导致相当多的延迟。 我不得不拿出最后两行代码才能工作。
[volumeView release]; ...
对于我来说,在iOS 7上,上述解决scheme都不起作用。 我是这样做的:
_volume = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100,-100,16,16)]; _volume.showsRouteButton = NO; _volume.userInteractionEnabled = NO; [self.view addSubview:_volume]; [_volume release];
也就是说,只需将MPVolumeView的框架设置为非屏幕位置,如(-100,-100)。
Swift 3
您可以使用隐藏系统MPVolumeView
override func viewDidLoad() { super.viewDidLoad() let volumeView = MPVolumeView(frame: CGRect.zero) self.view.addSubview(volumeView) }