【问题标题】:Loading the same ViewController after watching MPMoviePlayerController观看 MPMoviePlayerController 后加载相同的 ViewController
【发布时间】:2017-01-11 08:45:33
【问题描述】:
我有一个 ViewController 显示有关所选节目的信息,并且 MPMoviePlayerController 的播放按钮在那里。现在,问题是当我单击播放器的全屏然后单击完成时。它应该返回到显示信息的 ViewController,但事实并非如此。但它会进入 ViewController 的 viewDidLoad 并且它根本不显示任何内容。我觉得 ViewController 的顶部有东西或类似的东西
这是我移除播放器控制器的方法
- (void)dealloc
{
self.delegate = nil;
self.activityIndicator = nil;
[self deregisterMoviePlayerNotifications];
[self.player.view removeFromSuperview];
[self removeFromSuperview];
[self stopVideo];
self.player = nil;
}
【问题讨论】:
标签:
objective-c
mpmovieplayercontroller
【解决方案1】:
您应该使用AVPlayerViewController,因为MPMoviePlayerController 已弃用。您可以在播放按钮上使用此代码
-(void)playButton{
AVPlayer *player = [[AVPlayer alloc]initWithURL:urlVideo];
AVPlayerViewController *controller = [[AVPlayerViewController alloc]init];
controller.player = player;
controller.videoGravity = AVLayerVideoGravityResizeAspectFill;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:player.currentItem];
controller.videoGravity = AVLayerVideoGravityResizeAspect;
[self presentViewController:controller animated:YES completion:nil];
[player play];
}
-(void)playerItemDidReachEnd:(NSNotification*)notification{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self dismissViewControllerAnimated:YES completion:nil];
}
注意:不要忘记添加AVFoundation.framework。