applicationMusicPlayer объем уведомлений - PullRequest
14 голосов
/ 23 октября 2011

Я использую applicationMusicPlayer, и когда я пытаюсь изменить громкость, появляется визуальное уведомление, как показано на рисунке.Вот код, который я использую:

[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolune];

Кто-нибудь знает, как скрыть это уведомление?

enter image description here

Ответы [ 6 ]

28 голосов
/ 25 октября 2011

Я не знаю, где так написано в документах, но если вы добавите представление MPVolumeView в свое приложение, оверлей системного тома исчезнет.Даже если он не виден:

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

Вы можете использовать аппаратные кнопки громкости, метод setVolume или напрямую взаимодействовать с элементом управления (если он виден), что наложение не отображается.

4 голосов
/ 26 июня 2013

Для 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 сделал "видимым" на экране, но невидимым для пользователя.

2 голосов
/ 15 октября 2014

Я недавно столкнулся с той же проблемой.Вместо добавления MPVolumeView в текущее представление контроллера, я добавляю его в окно приложения один раз при запуске приложения:

CGRect rect = CGRectMake(-500, -500, 0, 0);
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect];
[self.window addSubview:volumeView];

Это работает как в iOS 7, так и в 8.

1 голос
/ 14 февраля 2017

Swift 3

Вы можете скрыть Систему MPVolumeView , используя

override func viewDidLoad() {
    super.viewDidLoad()
    let volumeView = MPVolumeView(frame: CGRect.zero)
    self.view.addSubview(volumeView)
  }
0 голосов
/ 05 февраля 2014

Для меня на 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).

0 голосов
/ 01 июня 2013

У меня был успех с этим в iOS 6. Хотя это не будет работать хорошо.Это приводило к некоторой задержке при перемещении thumbImage.Мне пришлось вынуть последние 2 строки кода, чтобы это сработало.

[volumeView release];
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...