我只是想知道当播放控件可见或隐藏时是否可以收到通知?
例如,我想呈现一个带有样式的视频:
self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;
视频开始播放时,播放控件可见并自动消失。如果用户只是选中了视频,则会显示控件。
我需要通知,以便我可以调整视图(重新定位MPMoviePlayerController
视图下的其他一些按钮。
那可能吗?因为遗憾的是我没有在文档中找到任何内容。
答案 0 :(得分:5)
我担心这些事件没有记录通知。
您可能很幸运并通过嗅探所有发布的通知来查找内容,如以下答案所示:
Trapping and tracing all notifications
How to receive NSNotifications from UIWebView embedded YouTube video playback
然而,有一种方法可以简单地将您的控件与MPMoviePlayerControler
的控件链接起来。这种方式绝对没有记录,并且在尝试在iTunes上销售您的应用程序时确实存在被拒绝的强大风险。
首先,您需要在MPMoviePlayerController
中找到界面视图,当使用嵌入式界面时,该视图直到今天由一个名为MPInlineVideoOverlay
的类表示。请再次注意,由于Apple可能决定使用不同的命名,因此他的这个机会很大或有突破性。
/**
* This quirky hack tried to locate the interface view within the supposingly opaque MPMoviePlayerController
* view hierachy.
* @note This has a fat chance of breaking and/or getting rejected by Apple
*
* @return interface view reference or nil if none was found
*/
- (UIView *)interfaceViewWithPlayer:(MPMoviePlayerController *)player
{
for (UIView *views in [player.view subviews])
{
for (UIView *subViews in [views subviews])
{
for (UIView *controlView in [subViews subviews])
{
if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")])
{
return controlView;
}
}
}
}
return nil;
}
如果返回正确的视图,您只需使用UIView addSubview:
将自己的添加内容添加到其中的界面上
一旦你这样做,你的控件将成为播放器界面的一部分,与它一起显示和隐藏(同时也遵守所有动画等)。