我有一个应用程序,其中我有一个集合视图。在点击集合视图时,我将呈现另一个视图控制器。此视图控制器包含一个视频。单击播放按钮时,视频会播放但是当我点击视频的全屏按钮时它会崩溃。应用程序中的任何位置,如果我添加视频并单击全屏以使其全屏崩溃。
这是我的代码:
- (void) didSelectItemFromCollectionView:(NSNotification *)notification
{
NSDictionary *cellData = [notification object];
UINavigationController *navigationcontroller;
if (cellData)
{
if (!self.detailViewController)
{
self.detailViewController = [[CourseDetailsViewController alloc] initWithNibName:@"CourseDetailsViewController" bundle:nil];
}
self.detailViewController.detailItem = cellData;
[self presentViewController:self.detailViewController animated:YES completion:nil];
}
}
这是从集合视图单元格中呈现视频视图控制器的代码。 在coursedetailcontroller里面。
viewDidLoad中的
-(void)viewDidload
{
MPMoviePlayerController *mc = [[MPMoviePlayerController alloc] initWithContentURL:nil];
mc.shouldAutoplay = NO;
mc.controlStyle = MPMovieControlStyleEmbedded;
NSURL *contentURL = [[NSBundle mainBundle] URLForResource:@"01 01. Welcome" withExtension:@"mov"];
mc.contentURL = contentURL;
mc.view.frame = self.test.bounds;
//test is the view where i am displaying the video
mc.movieSourceType = MPMovieSourceTypeFile;
[mc prepareToPlay];
[self.test addSubview:mc.view];
self.testvideo = mc;
}
一切正常,但当视频以全屏模式进入时,应用程序崩溃。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView trackRectForBounds:]: unrecognized selector sent to instance 0xa45f180' this error message is shown
答案 0 :(得分:0)
在我看来,使用MPMovieViewController会产生很多问题。您可以尝试AVPlayerViewController
播放视频。
您可以将此作为子视图添加到您的视图中,如下所示:
NSURL *url=[NSURL URLWithString:@"videourl.mp4"];
self.avPlayer = [AVPlayer playerWithURL:url];
self.avPlayerViewController=[[AVPlayerViewController alloc]init];
self.avPlayerViewController.player=self.avPlayer;
[self addChildViewController:self.avPlayerViewController];
[self.view addSubview:self.avPlayerViewController.view];