1

我在我的视频叠加层中使用 MPVolumeview 来使用路由按钮并连接到 airplay。我隐藏了 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的属性,所以我单步执行了代码,发现该属性并非始终正确。我在awakeFromNib中设置 MPVolumeView并且对 MPVolumeView 的检查在 layoutsubviews。有没有更好的方法来检查播放可用性,路由按钮是否始终显示 MPVolumeView 的问题,或者我错过了什么?

4

1 回答 1

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
    }
于 2016-06-09T22:24:21.620 回答