自定義MPMoviePlayerController

最近由於項目原因需要自定義MPMoviePlayerController,直接在player的的view上面加載其他控件的話,控件是能加上去,但是不能隨着player自帶的控制試圖消失而消失,最後逼不得已打印出來了player的所有子視圖,分析出player的試圖結構如下圖(該結構圖是ios6之前的結構圖,ios6之後有點變化)。


 

上圖中從上到下是試圖的層次,上面的是父視圖,下面的是其緊挨上層的子視圖。同一層從左到右的順序是視圖在父視圖的subviews中的排列順序。括號內是說明試圖的類型。實際上自定義時只用到兩個視圖MPFullScreenTransportControls和MPCenteringNavigationBar這兩個視圖,他們分別是播放器下方的聲音控制所在的視圖和上方的完成按鈕所在的navigationbar。獲取MPFullScreenOverlay的方法:

1.我們只需要通過[[player.backgroundView.superview subviews ] objectAtIndex:2];就可以獲得MPFullScreenOverlay視圖(只適合ios6之前版本)


2.調用[self readSubviews:player.view](ios6和之前都可以獲取)

- (void)printSubviews:(UIView *)view {

    for (UIView *aView in [view subviews])

    {     

        if ([aView isKindOfClass:NSClassFromString(@"MPFullScreenVideoOverlay")]) {

            overlayView = aView;

            return;

        }  

        [self printSubviews:aView];

    }

}

然後通過MpFullScreenOverlay的subviews就可以獲得我們需要的兩個視圖MPFullScreenTransportControls和MPCenteringNavigationBar,然後直接在這兩個視圖上操作就可以了。MPFullScreenTransportControls和MPCenteringNavigationBar這兩個試圖上的一些控件不能更改,但是你可以設置這些控件的hidden屬性,讓他們隱藏,你就可以自定義一些控件添加上面,這樣就可以自定義MPMoviePlayerController的試圖了。當然你可以自定義所有的視圖,只需要將MPFullScreenOverly的所有子視圖隱藏,然後創建新的視圖添加到MPFullScreenOverly視圖上就可以了。

轉自:http://blog.csdn.net/zzfsuiye/article/details/7790093

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