gpt4 book ai didi

iphone - MPMoviePlayerViewController 可以工作,MPMoviePlayerController 不能..为什么?

转载 作者:行者123 更新时间:2023-12-03 20:15:49 25 4
gpt4 key购买 nike

我有这个代码

NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"d" ofType:@"mp4"];  
NSURL *url = [NSURL fileURLWithPath:filepath];

//part 1
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: url];
[player.view setFrame: self.view.bounds];
//[player prepareToPlay];
//[player setShouldAutoplay:YES];
//[player setControlStyle:2];
[self.view addSubview: player.view];
[player play];

//part2
MPMoviePlayerViewController *mp = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[[mp moviePlayer] prepareToPlay];
[[mp moviePlayer] setShouldAutoplay:YES];
[[mp moviePlayer] setControlStyle:2];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];
[self presentMoviePlayerViewControllerAnimated:mp];

第 2 部分有效,第 1 部分无效...它们使用相同的 url,我几乎已经从 ADC 站点复制并粘贴了代码段

我使用的是ios5

最佳答案

这个问题已经发布很长时间了,但答案是您必须保留 MPMoviePlayerController 变量的引用。

如果函数中有第 1 部分的代码,请在 .h 文件中声明 MPMoviePlayerController *player。如果您不这样做(并且您正在使用 ARC 进行开发),您的玩家变量将在退出函数后立即被释放。请注意,您将 player.view 添加到 self.view,因此玩家的 View 会被保留,但玩家的 Controller 不会,并且会被释放。

所以你的 .h 文件中应该有:

MPMoviePlayerController *player;

在这种情况下,您的函数必须类似于:

-(void) playMovie
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"mymovie"
ofType:@"mov"]];

player = [[MPMoviePlayerController alloc] initWithContentURL: url];
[player.view setFrame: self.view.bounds];
[self.view addSubview: player.view];
[player play];
}

关于iphone - MPMoviePlayerViewController 可以工作,MPMoviePlayerController 不能..为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com