Cocoa touch 解除MoviePlayService控制器激活后iPad视图方向不正确
我的iPad应用程序使用方便的Cocoa touch 解除MoviePlayService控制器激活后iPad视图方向不正确,cocoa-touch,mpmovieplayercontroller,rotation,screen-orientation,mpmovieplayer,Cocoa Touch,Mpmovieplayercontroller,Rotation,Screen Orientation,Mpmovieplayer,我的iPad应用程序使用方便的mpmovieplayervewcontroller类全屏显示电影。我是这样介绍的: [self.hostController presentMoviePlayerViewControllerAnimated:playerViewController]; [self.hostController dismissMoviePlayerViewControllerAnimated]; 后来,当通知播放结束时,我会这样驳回: [self.hostControll
mpmovieplayervewcontroller
类全屏显示电影。我是这样介绍的:
[self.hostController presentMoviePlayerViewControllerAnimated:playerViewController];
[self.hostController dismissMoviePlayerViewControllerAnimated];
后来,当通知播放结束时,我会这样驳回:
[self.hostController presentMoviePlayerViewControllerAnimated:playerViewController];
[self.hostController dismissMoviePlayerViewControllerAnimated];
它工作正常,但在播放电影时用户旋转iPad时除外:
1-iPad处于垂直方向。我的观点是垂直的。
2-用户以垂直方向启动电影。球员是垂直的。
3-用户将iPad旋转到水平方向。
4-播放器切换到其水平方向。到现在为止,一直都还不错。
5-电影停止,播放器被关闭,我的屏幕再次出现,iPad仍然是水平的,但我的视图一直保持在垂直方向,这是在步骤1中。现在它看起来像侧面
当然,如果用户旋转iPad,它就会恢复正常。然后,我的视图会随着iPad的旋转而正常旋转
有人遇到过吗?简单的解决办法
谢谢。我已经遇到过很多次了,这似乎是一个苹果的bug(并且已经报告过了)
解决这个问题的唯一方法(我发现)是收听
UIDeviceOrientationIDChangeNotification
和UIApplicationIDChangeStatusBarOrientationNotification
通知。在这些通知上使用相对时间戳;如果两者都发生在一秒钟之内,则可以确定状态栏更改是用户切换方向的结果,而不是媒体SDK更改状态栏方向的结果。然后,当电影结束时,您可以告诉视图控制器它应该旋转到横向。在您的示例中,您应该注意到您的视图在lanscape中,但格式为纵向,并且状态栏实际上处于纵向位置。您只需调用[[UIApplication sharedApplication]SetStatusBaroOrientation:trueOrientation]
(在本例中为横向),视图控制器应完成其余操作。