尝试实现 UIViewController遏制。将要在其中显示影片的选项卡的 viewController 指定为父(或容器)viewController。
您将希望在子类中覆盖 shouldAutorotateToInterfaceOrientation 以仅允许横向,这听起来像是您已经完成的。在您的父视图控制器和 tabBarController 中,您需要确保它们将自动旋转方法转发给您的子类。您可以通过在 shouldAutorotateToInterfaceOrientation 的子类实现中放置 NSLog 来检查这一点。
然后,当您要显示视频时,将 MPMoviePlayerViewController 的子类添加到它。
当您加载电影播放器的子类时,请尝试在父视图控制器中执行此操作:
[self addChildViewController:self.subclassedMoviePlayerViewController];
[self.view addSubview:self.currentViewController.view];
[self.subclassedMoviePlayerViewController didMoveToParentViewController:self];
或者,如果您想为更改设置动画,您可以执行以下操作:
CGRect viewFrame=self.subclassedMoviePlayerViewController.view.frame;
CGFloat viewHeight=inputViewFrame.size.height;
CGRect newFrame=CGRectMake(0, self.view.frame.size.height, viewFrame.size.width, viewFrame.size.height);
self.subclassedMoviePlayerViewController.view.frame=newFrame;
[self addChildViewController:self.subclassedMoviePlayerViewController];
CGRect offSetRect=CGRectOffset(newFrame, 0, -inputViewHeight);
[self.view addSubview:self.subclassedMoviePlayerViewController.view];
[UIView animateWithDuration:0.2
animations:^{
self.subclassedMoviePlayerViewController.view.frame=offSetRect;
}
completion:^(BOOL finished){
[self.subclassedMoviePlayerViewController didMoveToParentViewController:self];
}];
当然,在添加之前,您必须为电影播放器视图控制器的子类设置视图框架。
那么当你想删除它时:
[self.subclassedMoviePlayerViewController willMoveToParentViewController:nil];
[self.subclassedMoviePlayerViewController.view removeFromSuperView];
[self.subclassedMoviePlayerViewController removeFromParentViewController];
祝你好运
吨