最近由于项目原因需要自定义MPMoviePlayerController,在网上没有找到找了很长时间没找到解决办法,最后逼不得已打印出来了player的所有子视图,分析出player的试图结构如下图。
上图中从上到下是视图的层次,上面的是父视图,下面的是其紧挨上层的子视图。同一层从左到右的顺序是视图在父视图的subviews中的排列顺序。括号内是说明视图的类型。实际上自定义时只用到两个视图MPFullScreenTransportControls和MPCenteringNavigationBar这两个视图,他们分别是播放器下方的声音控制所在的视图和上方的完成按钮所在的navigationbar。我们只需要通过[[player.backgroundView.superview subviews ] objectAtIndex:2];就可以获得MPFullScreenOverlay视图,然后通过MpFullScreenOverlay的subviews就可以获得我们需要的两个视图MPFullScreenTransportControls和MPCenteringNavigationBar,然后直接在这两个视图上操作就可以了。MPFullScreenTransportControls和MPCenteringNavigationBar这两个试图上的一些控件不能更改,但是你可以设置这些控件的hidden属性,让他们隐藏,你就可以自定义一些控件添加上面,这样就可以自定义MPMoviePlayerController的试图了。
![](https://img-my.csdn.net/uploads/201207/26/1343297022_5941.png)
上图中从上到下是视图的层次,上面的是父视图,下面的是其紧挨上层的子视图。同一层从左到右的顺序是视图在父视图的subviews中的排列顺序。括号内是说明视图的类型。实际上自定义时只用到两个视图MPFullScreenTransportControls和MPCenteringNavigationBar这两个视图,他们分别是播放器下方的声音控制所在的视图和上方的完成按钮所在的navigationbar。我们只需要通过[[player.backgroundView.superview subviews ] objectAtIndex:2];就可以获得MPFullScreenOverlay视图,然后通过MpFullScreenOverlay的subviews就可以获得我们需要的两个视图MPFullScreenTransportControls和MPCenteringNavigationBar,然后直接在这两个视图上操作就可以了。MPFullScreenTransportControls和MPCenteringNavigationBar这两个试图上的一些控件不能更改,但是你可以设置这些控件的hidden属性,让他们隐藏,你就可以自定义一些控件添加上面,这样就可以自定义MPMoviePlayerController的试图了。