Кнопка маршрута MPVolumeView не отображается постоянно
Я использую MPVolumeview в своем видео наложении, чтобы использовать кнопку маршрута и подключиться к трансляции. Я скрываю ползунок громкости MPVolume. Я пытаюсь изменить размер наложения, чтобы включить рамку для кнопки маршрута, только если доступна трансляция. Ранее я использовал наблюдателя на кнопку маршрута в MPVolumeView, как это:
for (UIView *view in volumeButton.subviews) {
if ([view isKindOfClass:[UIButton class]]) {
airplayButton = [view retain];
[airplayButton addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:nil];
}
}
Затем я устанавливаю логическое свойство, которое отслеживает, является ли кнопка видимой или нет. Однако недавно я обнаружил на iPhone 6, что кнопка маршрута не всегда отображается на видео. Я оглянулся на MPVolumeView и обнаружил, что теперь есть свойство areWirelessRoutesAvailable, поэтому я прошел по коду и обнаружил, что это свойство не всегда верно. Я устанавливаю MPVolumeView в awakeFromNib, и проверка MPVolumeView находится в макетах subviews. Есть ли лучший способ проверить доступность трансляции, кнопка маршрута постоянно показывает проблему с MPVolumeView или я что-то упустил?
1 ответ
Вы можете добавить наблюдатель для MPVolumeViewWirelessRoutesAvailableDidChangeNotification и изменить размер наложения при получении уведомления.
- (void)viewWillAppear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleWirelessRoutesDidChange:)
name:MPVolumeViewWirelessRoutesAvailableDidChangeNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)handleWirelessRoutesDidChange:(NSNotification *)notification {
NSLog(@"Wireless routes did change: %@", notification);
// Resize the overlay
}