【问题标题】:Cocoa-Touch: How to allow MPMoviePlayerController but no other views to autorotate?Cocoa-Touch:如何允许 MPMoviePlayerController 但不允许其他视图自动旋转?
【发布时间】:2010-11-20 21:31:41
【问题描述】:

我有这个 iOS 3.2 应用 (iPad),它有很多内容和一些视频。

所有视图都是纵向的,除了纵向内联的视频,带有全屏选项,我想让用户在全屏时自动旋转视频。

shouldAutorotateForInterfaceOrientation: 我的应用程序通常拒绝自动旋转。

如何让 MPMoviePlayerController 的视图自动旋转,而不是我的应用程序中的任何其他视图?

我想到的一些想法:

  1. shouldAutorotateForInterfaceOrientation::
    return isFullscreenMovieActive;
    这将使应用程序在电影处于全屏模式时允许旋转。除了一个大问题外,这非常有效,一旦用户退出全屏模式,我就无法强制应用程序返回纵向模式。 (即用户启动应用程序,找到一个电影播放器​​,播放它,进入全屏模式,旋转设备,按下完成,现在他的应用程序处于横向模式)
    有没有一种可接受的方式强制旋转到UIInterfaceOrientation

  2. Apple 实际上建议从它的视图方法中获取MPMoviePlayerController 的视图。当设备旋转时,实际发生的是应用程序的UIWindow 应用了CGAffineTransform。所以我可以对MPMoviePlayerController 的视图执行此操作,但是当进入全屏模式时,视图会发生变化,并且不是视图属性中的那个。
    那么有什么可以接受的方式来获取MPMoviePlayerController的全屏视图呢?

或者这个任务有更好的解决方案吗?

【问题讨论】:

  • 您的应用支持横向模式吗?
  • @tc:就是这样,我想支持它,但我找不到在用户退出全屏视频后强制 iPad 回到纵向的方法。我有一个非常特殊的情况,即方向必须是纵向的,这是有充分理由的。

标签: iphone cocoa-touch ios mpmovieplayercontroller


【解决方案1】:

每个视图控制器都可以使用shouldAutorotateForInterfaceOrientation: 返回它支持的方向。除了MPMoviePlayerController 之外,您应用的控制器应该只为纵向旋转返回真值。当您的应用显示视频时,将MPMoviePlayerController 显示在您的其他视图控制器上,并使用presentModalViewController:animated:(或iOS 5 中的presentViewController:animated:completion:)。视频播放完毕后,关闭特殊的电影播放器​​控制器,您的其他控制器仍应处于纵向模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多