【问题标题】:MPMoviePlayerViewController Not Rotating until app restartMPMoviePlayerViewController 在应用重新启动之前不旋转
【发布时间】:2023-03-29 06:03:01
【问题描述】:

这是一个有趣的问题

我们的应用出现异常行为

如果您在应用从网络或本地播放 mp4 时将该应用(通过试飞或通过 xcode 调试)安装到“干净”设备(该应用之前不存在或之前已被删除)上记忆。用于播放应用的 MPMoviePlayerViewController 不会旋转。

但是,如果您强制退出应用并重新启动,一切都会正确旋转。即使您在不关闭后台线程的情况下退出并返回,视频也不会旋转。

这是简单的代码

    mediaController = [[MPMoviePlayerViewController alloc] initWithContentURL: [NSURL fileURLWithPath: videoPath]];
    [self presentMoviePlayerViewControllerAnimated: mediaController];
    [mediaController release];

有什么想法吗?

【问题讨论】:

  • 进一步调查显示,当设备旋转时,shouldRotate 方法永远不会被调用。它在播放器出现时被调用,因此视频与初始方向正确对齐但永远不会改变
  • 当前视图控制器(自身)是在弹出框还是模态显示?
  • 这种轮换仅在第二次启动时听起来很像您的应用程序中存在其他问题。您是否尝试用尽可能少的代码开发一个小展示来确认这个问题?
  • self 是标签栏控制器上导航控制器的根视图。我目前正在尝试在测试应用程序中设置和缩小问题范围。我希望它会出现在我的代码中,但是除了安装后的第一次之外,它每次都有效,这令人困惑。

标签: iphone ios xcode mpmovieplayercontroller rotation


【解决方案1】:

可能是另一个选项卡的根视图之一正在阻止包含您的播放器的根视图旋转。 UITabBarController 询问它的所有子视图控制器(每个选项卡一个)是否应该允许旋转,并且如果所有子视图控制器都允许,则只允许一个旋转到给定方向。这样做是为了避免当用户切换标签时方向从一个剧烈切换到另一个。尝试在 shouldAllowAutoRotation 中为所有 UITabBarController 的孩子设置一个断点,看看它们是否被调用。

【讨论】:

  • 我会检查一下,但它没有解释为什么每次都会发生这种情况,除非是刚刚安装了应用程序
【解决方案2】:

我发现了这个问题。 UIWindow 只能有一个视图。如果添加另一个,第二个视图将不会收到通知。我有一个动作在第一次加载时触发,导致视图不旋转。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多