我在视频叠加层中使用MPVolumeview来使用路线按钮并连接到airplay。我隐藏了MPVolume的音量滑块。我试图调整叠加层的大小,以便仅在airplay可用时包含路线按钮的框架。以前我一直在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 的属性,所以我逐步完成了代码,发现这个属性并不一致。我在 awakeFromNib 中设置了MPVolumeView,并且对MPVolumeView的检查位于 layoutsubviews 中。有没有更好的方法来检查airplay的可用性,路由按钮是否一直显示MPVolumeView的问题或我错过了什么?
答案 0 :(得分:0)
您可以为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
}