Iphone 在用户旋转到横向时全屏播放视频,然后在视频停止时以编程方式向后旋转
我有一个要求,即包含视频的界面仅为纵向,但当用户旋转横向时,视频进入全屏并开始播放,然后当视频结束或用户单击“完成”时,视频退出全屏,界面仍为纵向。我尝试过使用shouldAutorotateToInterfaceOrientation:方法来启动视频。但我无法让屏幕再次旋转。我决定改为使用shouldAutorotateToInterfaceOrientation:并创建我自己的视图控制器以仅处理视频,并使用-[UIView setTransform:]旋转视频,但旋转只有在我禁用全屏时才起作用。这是我的代码的一部分Iphone 在用户旋转到横向时全屏播放视频,然后在视频停止时以编程方式向后旋转,iphone,ios,cocoa,video,mpmovieplayercontroller,Iphone,Ios,Cocoa,Video,Mpmovieplayercontroller,我有一个要求,即包含视频的界面仅为纵向,但当用户旋转横向时,视频进入全屏并开始播放,然后当视频结束或用户单击“完成”时,视频退出全屏,界面仍为纵向。我尝试过使用shouldAutorotateToInterfaceOrientation:方法来启动视频。但我无法让屏幕再次旋转。我决定改为使用shouldAutorotateToInterfaceOrientation:并创建我自己的视图控制器以仅处理视频,并使用-[UIView setTransform:]旋转视频,但旋转只有在我禁用全屏时才起作
- (void)deviceOrientationDidChangeNotification:(NSNotification *)aNotification
{
switch ([[UIDevice currentDevice] orientation])
{
case UIDeviceOrientationPortrait:
case UIDeviceOrientationPortraitUpsideDown:
[self setFullscreen:NO animated:YES];
break;
case UIDeviceOrientationLandscapeLeft:
case UIDeviceOrientationLandscapeRight:
[self.moviePlayerController play];
[self setFullscreen:YES animated:YES];
break;
default:
break;
}
}
- (void)setFullscreen:(BOOL)aFullScreen animated:(BOOL)anAnimated
{
if( aFullScreen )
{
switch ([[UIDevice currentDevice] orientation])
{
case UIDeviceOrientationLandscapeLeft:
case UIDeviceOrientationPortraitUpsideDown:
self.moviePlayerController.view.transform = CGAffineTransformMakeRotation(M_PI_2);
break;
case UIDeviceOrientationPortrait:
case UIDeviceOrientationLandscapeRight:
self.moviePlayerController.view.transform = CGAffineTransformMakeRotation(M_PI+M_PI_2);
break;
default:
break;
}
}
else
self.moviePlayerController.view.transform = CGAffineTransformMakeRotation(0);
[self.moviePlayerController setFullscreen:aFullScreen animated:anAnimated]; // comment this out and rotation works
}
有人能给我一些建议吗?我现在想我应该实现我自己的全屏转换,让它工作起来,但我想我会先得到一些反馈。我也被这个弄糊涂了。。。与设备和视图旋转等问题搏斗,甚至设法让事情大部分正常工作,但我不断发现另一种情况会破坏它(例如,用户在旋转时进出全屏,播放后神秘地丢失状态栏,等等) 我希望你能按照你在这里提出的思路找到解决方案(我期待着从中学习)。否则,你可以像我一样,从半败的夹缝中夺取半胜利,如下所示:
- 为电影创建新的仅横向视图控制器 玩。它只需回答以下问题即可实现横向定位 应自动旋转指针面方向:
- 从你正在做的VC中找出所有难看的方向代码, 简单介绍一下Modalviewcontroller:在新的上。(你甚至可以 有一个很酷的免费转场效果,比如垂直滑入)
- 当ViewDid出现时加载并播放电影
- 在景观视频VC中,订阅 MPMoviePlayerPlaybackDidFinishNotification,on notify,do[self dismissModalViewController:是]李>
祝你好运。(如果您需要,我可以提供详细的代码)。我使用view.transform并更改视图框以填充屏幕的方法似乎工作得很好,我还没有让动画正常工作,我已经更改了播放控制样式并隐藏了状态栏。制作动画更复杂,因为我必须在旋转时增加正常屏幕的遮光,而且因为我的视频视图不在屏幕的中心,所以我必须做一些工作,使视图移动到中心的速度比旋转和填充屏幕的速度快,以改善外观,但这一切似乎都是可行的。