2

我的iPad应用程序使用方便的MPMoviePlayerViewController类显示一个电影全屏。我提出这样的:iPad在错过方向后在错误的方向看MovieMotionPlayerViewControllerAnimated

[self.hostController presentMoviePlayerViewControllerAnimated:playerViewController]; 

后来,当被通知播放完成后,我关闭它是这样的:

[self.hostController dismissMoviePlayerViewControllerAnimated]; 

它正常工作,当用户播放电影时旋转的iPad,除了:

1- iPad处于垂直方向。我的观点是垂直的。 2-用户以垂直方向开始播放电影。玩家是垂直的。 3-3用户将iPad旋转到水平方向。 4-播放器切换到水平方向。到现在为止还挺好。 5-电影停止,播放器被解雇,我重新出现,iPad仍然是水平的,但我的视图停留在垂直方向,是在步骤1中。现在它看起来横向。

当然,如果用户转动iPad,它会恢复正常。随着iPad旋转,我的视图会正常旋转。

有没有人遇到过这种情况?一个简单的修复?

谢谢。

回答

2

我遇到过这么多次,它似乎是一个苹果的bug(并已报道)。

围绕这个的唯一方法(我找到)是听UIDeviceOrientationDidChangeNotificationUIApplicationDidChangeStatusBarOrientationNotification通知。在这些通知上使用相对时间戳;如果它们都发生在一秒钟内,则可以确保状态栏更改是用户切换方向的结果,而不是媒体SDK更改状态栏方向的结果。然后,当电影完成后,您可以告诉视图控制器它应该旋转为横向。

+0

在你的例子中,你应该注意到你的视图是在lanscape中,但是格式化为肖像,状态栏实际上是在肖像位置。所有你需要做的就是调用'[[UIApplication sharedApplication] setStatusBarOrientation:trueOrientation]'(在这个例子中是横向的),你的视图控制器应该完成剩下的工作。 – Jason 2010-09-05 16:07:58

+0

很好用。非常感谢。 – 2010-09-05 16:43:26