kdb*_*las 14 iphone cocoa-touch objective-c
我试图弄清楚如何将自定义控件添加到iPhone MoviePlayer.有关我要做的事情的示例,请参阅以下图像.

我试图在基本电影控件的右侧和左侧添加类似控件的内容.
我在Open SDK中通过向playerview添加子类来完成此操作,但现在在官方SDK和Apple转移到MPMoviePlayerController我不知道该怎么做.
此外,使用我的旧1.x固件方式,它需要我自己捕捉触摸事件并隐藏/显示控件.我希望有一种方法可以用标准控件来做到这一点,但如果没有,那很好.
提前致谢.
kdb*_*las 10
我发现了最好的方法!
您可以像平常一样创建电影播放器,然后执行以下操作:
id vvController = [theMovie videoViewController];
[[vvController _overlayView] addSubview:mainView];
Run Code Online (Sandbox Code Playgroud)
'mainView'是您的自定义叠加层.这样做会使你的自定义叠加层显示和隐藏正常的叠加层,因为它们现在是同一叠加层!
请注意,这仍然使用标准框架,但它在框架中没有记录.因此它应该是100%appstore安全,但"可能"在以后的框架中没有Apple的通知而改变.
小智 10
这里的人们可能还在其他各种博客文章中看到了以下"获取电影播放器窗口"的方法 - 索引= 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16249 次 |
| 最近记录: |