AVRoutePickerView 和 MPVolumeView 投屏

     最近小萌的項目有投屏的需求,開始使用的是保利威的SDK,但是保利威的SDK不管iOS或者Android都是隻支持樂播投屏,但是我們項目的需求是AirPlay投屏

    在我查找很多資料的過程中發現AVRoutePickerView和MPVolumeView都是支持投屏,但是AVRoutePickerView支持iOS11以上的系統,iOS11一下的系統只能用MPVolumeView來做投屏了。

    AVRoutePickerView 和 MPVolumeView 的區別:

1、AVRoutePickerView支持iOS11以上

2、MPVolumeView支持iOS11以下

3、AVRoutePickerView無論有沒有投屏設備都會顯示圖標

4、MPVolumeView在附近無投屏設備的情況下是不會顯示圖標的

 

    小萌充分體驗了優酷、愛奇藝、騰訊、芒果等有投屏功能的app,發現他們的投屏功能也是基於這兩個控件做的,在網上雖然說了各種它們的使用方法,但是都是講了最基本的用法

  

  但是在具體項目中,我們想要的絕對不是這樣的圖標,我們需要更換圖標,這件小事讓我花費了不少的時間

主要代碼:

 

- (AVRoutePickerView *)castView  API_AVAILABLE(ios(11.0)){
    if(!_castView){
        _castView = [[AVRoutePickerView alloc]init];
        for (UIView *view in _castView.subviews) {
             if ([view isKindOfClass:[UIButton class]]) {
                 UIButton *button = (UIButton *)view;
                 [button removeFromSuperview];
              }
          }
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(12, 12, 20, 20)];
        imageView.image = ZFPlayer_Image(@"cast");
        [_castView addSubview:imageView];
        _castView.delegate = self;
    }
    return _castView;
}

 

既然這是一個可點擊的事件,那麼它的底層一定有UIControll這樣的事件來控制,查看它的子視圖,不難發現它的底層是有button的,把它刪掉也就把系統默認的圖標刪掉了,AVRoutePickerView是繼承UIView的,所有它有UIView的特性,自己定製即可,不會影響AVRoutePickerView的UIControll點擊事件的,仍然會呼出投屏菜單

   

圖標也更換成我們想要的了, MPVolumeView也是同理

完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章