我试图弄清楚如何将自定义控件添加到iPhone MoviePlayer.有关我要做的事情的示例,请参阅以下图像.
我试图在基本电影控件的右侧和左侧添加类似控件的内容.
我在Open SDK中通过向playerview添加子类来完成此操作,但现在在官方SDK和Apple转移到MPMoviePlayerController我不知道该怎么做.
此外,使用我的旧1.x固件方式,它需要我自己捕捉触摸事件并隐藏/显示控件.我希望有一种方法可以用标准控件来做到这一点,但如果没有,那很好.
提前致谢.
我发现了最好的方法!
您可以像平常一样创建电影播放器,然后执行以下操作:
id vvController = [theMovie videoViewController]; [[vvController _overlayView] addSubview:mainView];
'mainView'是您的自定义叠加层.这样做会使你的自定义叠加层显示和隐藏正常的叠加层,因为它们现在是同一叠加层!
请注意,这仍然使用标准框架,但它在框架中没有记录.因此它应该是100%appstore安全,但"可能"在以后的框架中没有Apple的通知而改变.
这里的人们可能还在其他各种博客文章中看到了以下"获取电影播放器窗口"的方法 - 索引= 1.虽然这种方法(参见下面的代码片段)也可能有点"脆弱",但很可能是位"更安全",因为它并没有使用在任何的MPMoviePlayerController无证或非公开的方法.
另请注意,您应该等到获得MPMoviePlayerContentPreloadDidFinishNotification,以便电影播放器窗口(idx = 1)确实存在;-)
注意我也在这里为myOverlayView分配一个任意(整数值)视图"标签" - 这样我就可以在可能的情况下重新使用视图,即检查它是否已经添加到父播放器窗口.
anyhoo,这是相关的代码片段:
// use slight "hack" to get our (parent) movie-player window, should always (?) be the UIWindow at index = 1 // UIWindow *moviePlayerWindow= [[[UIApplication sharedApplication] windows] objectAtIndex:1]; myOverlayView.center = CGPointMake( moviePlayerWindow.bounds.size.width - (myOverlayView.bounds.size.height / 2) - myOverlayView.display_origin.y, moviePlayerWindow.center.y ); // center our overlay-view myOverlayView.hidden = NO; // and show it if( [moviePlayerWindow viewWithTag: MY_OVERLAY_VIEW_TAG] == nil ) { // haven't added our overlay-view as a sub-view to the main MoviePlayer window yet... so do that now myOverlayView.tag = MY_OVERLAY_VIEW_TAG; [moviePlayerWindow addSubview: myOverlayView]; } [moviePlayerWindow bringSubviewToFront: myOverlayView]; // in any case, bring it to the foreground
Apple提供的此示例应用程序应该有所帮助.从描述:
演示如何使用Media Player Framework全屏播放电影.该示例包含用于通过内置的"设置"应用程序配置电影背景颜色,播放控件和缩放模式的代码.还显示如何在播放期间在电影上绘制自定义叠加控件.