我有一个在发布时自动播放的视频。短片完成后会显示黑屏。我想解雇子视图以显示图像或自动加载另一个控制器?
以下是我的代码:
(void)viewDidLoad
{
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"cover" ofType:@"mp4"]];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc]
initWithContentURL:url];
player.movieSourceType = MPMovieSourceTypeFile;
[player setControlStyle:MPMovieControlStyleNone];
player.view.frame = CGRectMake(0, 0, 768, 960);
[self.view addSubview:player.view];
[player play];
player = nil;
}
感谢您的帮助..我是这方面的新手。
答案 0 :(得分:0)
几周前我发现了很多这个问题。查看可用的通知。 http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html
将类似内容添加到viewDidLoad:
// Remove the movie player view controller from the "playback did finish" notification observers
[[NSNotificationCenter defaultCenter] removeObserver:_moviePlayer
name:MPMoviePlayerPlaybackDidFinishNotification
object:_moviePlayer];
// Register this class as an observer instead
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:_moviePlayer];
现在您有了一种可以重新添加视图,缩略图或其他内容的方法:
- (void)movieFinishedCallback:(NSNotification*)aNotification
{
// Obtain the reason why the movie playback finished
NSNumber *finishReason = [aNotification userInfo][MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
if ([finishReason intValue] == MPMovieFinishReasonPlaybackEnded) {
[self.view addSubview:self.moviePlayer.view];
}
(这段代码是从我的项目中动态调整的,可能需要考虑适应!)
MPMoviePlayerController有很多通知在电影播放,暂停,停止,完成等时被触发。您可以将代码添加到这些方法中,以便很好地控制演示文稿。
在我的情况下,它花了大约一天的研究和黑客(可能还有另外半天的清理和调整),但我设法得到一个非常好的播放/暂停透明按钮,带有“播放图标”图像叠加暂停或停止时,根据玩家状态进行所有加载或卸载。这是一个简单的自定义播放器控件,完全符合我的要求。完全可行,只需从一个玩家状态开始,获得你想要的东西,然后进入下一个状态。