【发布时间】:2012-05-21 18:00:49
【问题描述】:
当orientation 更改时,我的MPMoviePlayerViewController 不是auto-旋转时出现一些奇怪的行为。但是,我在一个新项目中重新创建了相同的视图层次结构,当MPMoviePlayerViewController 播放器启动时,它会旋转到每个方向。我已经搜索了该项目,寻找任何可能明确设置方向的东西,但什么都没有。
我将在这里列出所有相关信息以及我迄今为止尝试过的事情。
当前视图层次结构如下所示:
- 导航控制器
- “根”视图控制器
- “Feed”视图控制器
- “预览”视图控制器
- MPMoviePlayerViewController 子类
视图层次结构中的每个类都以 YES 响应 shouldAutorotateToInterfaceOrientation,仅针对 UIInterfaceOrientationPortrait。
我尝试过的事情:
- 手动将
shouldAutorotateToInterfaceOrientation向上堆栈从“根”VC 发送到MPMoviePlayerViewController - 覆盖
shouldAutorotateToInterfaceOrientation的MPMoviePlayerViewController子类的实现,以对两个横向返回YES和对所有方向返回YES。 - 在项目的摘要选项卡中设置“支持的设备方向”。
- 从 Feed VC 等其他 VC 调用
presentMoviePlayerViewControllerAnimated
如果电影播放器在具有相同视图层次结构的新项目中正确旋转,那么这里可能会出现什么问题。关于方向可能会卡住的任何想法?
【问题讨论】:
-
使用 UINavigationController(或 UITabBarController)的应用程序仅在 所有 可显示(堆叠/选项卡式)视图控制器同意旋转时旋转。在您的情况下,请确保 MPMoviePlayerViewController 子类在
shouldAutorotateToInterfaceOrientation中被询问时在所有情况下实际上都返回YES。 -
@Till 我当然明白这一点,但正如我所说:在具有相同视图层次结构的测试项目中,所有视图都同意一个旋转(纵向),电影播放器旋转到每个方向而不一个问题。编辑:您回复的后半部分在我的问题中的“我尝试过的事情”下得到了回答。谢谢!
-
对,请检查我编辑的评论,因为我最初并没有完全理解您的 UI 层次结构。
-
哦,你提到的 YES 仅适用于横向 - 并非适用于所有方向。
-
总的来说,这似乎是一个非常本地化的问题——尤其是因为你已经做了正确的事情;试图在一个最小的项目中重新创建问题。由于您未能在该最小项目场景中重新创建问题,因此您的问题显然存在于两个项目的差异中。如果我处于您的情况,我会非常仔细查看您的
MPMoviePlayerViewController子类和呈现的 viewController(“预览”)。如果所有这些都失败了,请在 VC 层次结构中走得更高。
标签: iphone objective-c ios