因此,我们构建了一个仅支持横向的iPad应用程序。通过在plist中将Supported interface orientations (iPad)
设置为Landscape (left/right home button)
来强制执行此操作。此外,所有UIViewControllers
都已实施shouldAutorotateToInterfaceOrientation:
,如下所示:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
此工作正常,应用程序被锁定在横向方向。现在我们在其中一个视图中嵌入了MPMoviePlayerController
。当用户使用此电影全屏时,他可以旋转到肖像。电影播放器似乎绕过了我们所有的景观设置。这对我来说很好,但是当用户在纵向方向上点按done
- 按钮时,我们所有的UIViewControllers
也都是纵向的并且看起来很糟糕!
用户必须旋转iPad以使自己风景自如,以使事物再次显得良好,然后无法按预期旋转回到肖像。
那么,即使所有shouldAutorotateToInterfaceOrientation
告诉iOS不要旋转为肖像,为什么我的视图会轮换为纵向?我怎样才能确保电影播放器不会轮换我的观看次数?
如果您的解决方案还将电影播放器本身锁定在风景中,那对我来说没问题。只要我的意见没有轮换,我很高兴! :)
答案 0 :(得分:5)
那么,为什么我的视图会旋转到纵向,即使所有的应该都是指定的,不能旋转到纵向的AutorotateToInterfaceOrientation?我怎样才能确保电影播放器不会轮换我的观看次数?
如果您的解决方案还将电影播放器本身锁定在风景中,那对我来说没问题。只要我的意见没有轮换,我就没事了! :)
使用此视图层次结构时,我遇到了这个问题:
+------------------------+ +-------------------+
| | | |
| UINavigationController +->| Some Intermediate |
| | | View Controllers |
+------------------------+ | |
+---------------+---+
|
v
+--------------------------+
| MPMoviePlayerController |
| (embed) |
+--------------------------+
所有中级视图控制器都被锁定为横向方向,因此除非MPMoviePlayerController处于全屏状态(导致与OP完全相同的问题),否则App永远不会处于纵向状态。
解决方案是通过创建覆盖shouldAutorotateToInterfaceOrientation
的子类将 UINavigationController 锁定到Landscape方向。这样MPMoviePlayerController就不再旋转到纵向方向。我怀疑当进入全屏时它会将自己添加到mainWindow的rootViewController中,在我的例子中是UINavigationController(或者更确切地说是我的子类)。
希望这有帮助!