AVPlayerViewController 播放完毕后退出全屏

4

你好,由于MPMoviePlayerController已被弃用,我将其替换为AVPlayerViewController。我的进展非常接近,但有一个问题。我的电影作为视图的一部分开始播放。当全屏播放时,我想在播放完成后跳回非全屏模式。但我不知道如何操作。以下是我的代码:

- (void)viewDidLoad {

// grab a local URL to our video
NSURL *videoURL = [[NSBundle mainBundle]URLForResource:@"movie" withExtension:@"m4v"];

// create an AVPlayer
AVPlayer *player = [AVPlayer playerWithURL:videoURL];

// create a player view controller
self.controller = [[AVPlayerViewController alloc]init];
controller.player = player;
[player play];


// show the view controller
[self addChildViewController:controller];
[self.view addSubview:controller.view];
controller.view.frame = CGRectMake(0,25, 750, 422);

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:player];
}
使用 MPMoviePlayer 时,可以使用以下代码:
    - (void) playerPlaybackDidFinish:(NSNotification*)notification{
// movie finished playing
[moviePlayerController setFullscreen:NO];
}

我需要用什么代码来替换它?
-(void)itemDidFinishPlaying:(NSNotification *) notification {
// Will be called when AVPlayer finishes playing playerItem
 ???????????}

感谢,Meg。

可能是重复的问题?https://stackoverflow.com/questions/27380264/avplayer-exit-fullscreen-on-finish-playing - Alex Hedley
1个回答

0

#iOS 10及以上版本和Swift 4.2,此代码可正常工作。

将此代码编写到您的播放器初始化方法中。

if #available(iOS 11.0, *) {
      self.playerVC?.exitsFullScreenWhenPlaybackEnds = true
 }

NotificationCenter.default.addObserver(self, selector: #selector(self.playerItemDidReachEnd(notification:)), name: .AVPlayerItemDidPlayToEndTime, object:self.playerVC?.player!.currentItem)

这是您的通知委托

func playerItemDidReachEnd(note:NSNotification){
     print("finished")
     dismissViewControllerAnimated(true, completion: nil)
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接