我正在尝试弄清楚如何向iPhone MoviePlayer添加自定义控件。有关我正在尝试执行的操作的示例,请参见下图。

我正在尝试添加一些类似于基本电影控件右侧和左侧的控件。
我在Open SDK中通过在playerview中添加一个子类来做到这一点,但现在在官方SDK和苹果移动到MPMoviePlayerController中,我不确定如何做到这一点。
同样,使用旧的1.x固件方式,它需要我自己捕获触摸事件并隐藏/显示控件。我希望有一种方法可以用标准控件做到这一点,但如果没有,那也没问题。
提前谢谢。
发布于 2008-10-11 21:08:04
我找到了做这件事的最好方法!
您可以像普通一样创建电影播放器,然后执行以下操作:
id vvController = [theMovie videoViewController];
[[vvController _overlayView] addSubview:mainView];其中'mainView‘是您的自定义覆盖。这样做,这样你的自定义覆盖将显示和隐藏与正常覆盖,因为他们现在是一个在同一!
请注意,这仍然使用标准框架,但在框架中没有文档。所以它应该是100%的appstore安全的,但是在以后的框架中“可能”会在没有苹果通知的情况下改变。
发布于 2009-10-24 09:17:57
这里的人可能还在其他博客文章中看到了以下“获取电影播放器窗口”的方法--在索引= 1处。虽然这种方法(参见下面的代码片段)也可能有点“脆弱”,但它可能更“安全”,因为它没有使用MPMoviePlayerController中任何未记录的或非公共的方法。
还要注意,你应该等到你得到一个MPMoviePlayerContentPreloadDidFinishNotification,,这样电影播放器窗口(idx=1)才会真正存在;-)
注意,我在这里也给myOverlayView分配了一个任意的(整数值)视图“标签”--这样我就可以在可能的情况下重用视图,即检查它是否已经被添加到父播放器窗口中。
不管怎样,下面是相关的代码片段:
// 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发布于 2008-10-10 13:27:36
苹果提供的This sample application应该会有所帮助。从描述中可以看出:
演示了如何使用媒体播放器框架全屏播放电影。该示例包含通过内置的Settings应用程序配置影片背景颜色、播放控件和缩放模式的代码。还演示了如何在播放过程中在电影顶部绘制自定义覆盖控件。
https://stackoverflow.com/questions/190493
复制相似问题