ApplicationMusicPlayer volume notification
Я использую applicationMusicPlayer, и когда я пытаюсь изменить том, появляюсь визуальное уведомление, как показано на рисунке.
Здесь код, который я использую:
[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolune];
Кто-нибудь знает, как скрыть это уведомление?
![enter image description here]()
Ответы
Ответ 1
Я не знаю, где это говорится в документах, но если вы добавите представление MPVolumeView
к вашему приложению, то наложение тома системы исчезнет. Даже если это не видно:
- (void) viewDidLoad
{
[super viewDidLoad];
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
[self.view addSubview: volumeView];
[volumeView release];
...
}
Вы можете использовать кнопки аппаратного тома, метод setVolume
или напрямую взаимодействовать с элементом управления (если видимым), что наложение не отображается.
Ответ 2
Для iOS6 мне нужно было установить изображение с альфа-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
"видимым" на экране, но невидимым для пользователя.
Ответ 3
Недавно я столкнулся с той же проблемой. Вместо того, чтобы добавлять представление MPVolumeView в текущий вид контроллера, я добавляю его в окно приложения один раз в начале приложения:
CGRect rect = CGRectMake(-500, -500, 0, 0);
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect];
[self.window addSubview:volumeView];
Это работает как в iOS 7, так и в 8.
Ответ 4
У меня был успех с этим в iOS 6. Хотя он не будет работать хорошо. Это вызвало довольно небольшое отставание при перемещении thumbImage. Я должен был вынуть последние 2 строки кода, чтобы это работало.
[volumeView release];
...
Ответ 5
Для меня, на iOS 7, ни одно из вышеперечисленных решений не работало. Вот как я это сделал:
_volume = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100,-100,16,16)];
_volume.showsRouteButton = NO;
_volume.userInteractionEnabled = NO;
[self.view addSubview:_volume];
[_volume release];
То есть просто установите кадр MPVolumeView в положение вне экрана, например (-100, -100).
Ответ 6
Swift 3
Скрывать System MPVolumeView можно с помощью
override func viewDidLoad() {
super.viewDidLoad()
let volumeView = MPVolumeView(frame: CGRect.zero)
self.view.addSubview(volumeView)
}