2016-01-08 46 views
1

我在視頻覆蓋中使用MPVolumeview以使用路由按鈕並連接到airplay。我隱藏了MPVolume的音量滑塊。我試圖調整疊加層的大小,以便只有在airplay可用的情況下才包含路由按鈕的框架。以前我一直在使用的路由按鈕觀察員在這樣的MPVolumeView: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

有同樣的問題,按鈕在iPad 2上很穩定,但在iPhone 6上並不總是顯示。 –

+0

在這裏找到一個技巧來永久顯示airplay按鈕:https://stackoverflow.com/a/46787632/5144603 – raphael

回答

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 
    }