【问题标题】:iPhone rotation and full-screen videoiPhone 旋转和全屏视频
【发布时间】:2012-04-26 00:43:46
【问题描述】:

我遇到了一个奇怪的问题,需要帮助解决。我的应用程序始终以纵向模式运行 - 我明确希望它是这样的。在应用程序的一个地方,我有一个 UIWebView,它工作得很好,正如预期的那样。此 Web 视图不会一直显示,而是会根据用户操作动态添加到主视图并删除(即仅在需要时才可见)。

现在,有时在这个视图中我可能有一个 youtube 视频。 WebView 仅包含 youtube 嵌入的 <iframe>。当用户点击 webview 中的视频预览框时,会启动一个全屏视频查看器来播放视频 - 这很好。

但是,如果在播放过程中用户旋转手机,则会旋转全屏视频播放器并以横向模式播放视频。现在视频停止并且用户按下“完成”按钮而不将手机旋转回纵向模式,视频播放器关闭并且用户返回到我的应用程序 - 但是现在我的布局也旋转了!不仅是视频视图,还有整个布局 - 带有工具栏、导航控制器等。

我不想要任何旋转!我只希望我的应用程序中的所有内容都保持纵向模式!此外,现在即使手机旋转回纵向,应用程序也会保持横向模式。

请注意,到目前为止,我只在模拟器中对此进行了测试,因为我目前没有要测试的实体手机。我创建了一个简单的(质量很差!)视频(只是用旧手机摄像头在我的屏幕上拍摄了模拟器)来演示这个问题 - 视频在这里:http://shchuka.com/hosting/rotation_problem.mp4

有什么想法我能做些什么吗?

【问题讨论】:

    标签: iphone video rotation fullscreen


    【解决方案1】:

    添加或更改它:

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    
        return (UIInterfaceOrientation == UIInterfaceOrientationPortrait);
    
    }
    

    这将阻止所有旋转,并且该应用只能在纵向模式下运行。您可以将 return 语句放在 IF 语句中,以便在某些情况下允许轮换。

    【讨论】:

    • 试过这个 - 但该方法甚至没有被调用。我错过了什么吗?
    • @AleksG 您是否将此方法放在 UIViewController 中?
    • 是的,我将方法放入我的 UIViewController 的实现 .m 文件中(即从它扩展的类)。我认为这可能与我的应用程序在轮换发生时未处于活动状态有关。相反,全屏视频播放器处于活动状态。
    • 通过代码调试,我可以看到当视图第一次被[navigationController pushViewController:myController animated:YES]压入堆栈时调用了这个方法。之后,当我启动轮换时,它不再被调用。
    • 我会接受这个答案,因为这是解决方案的一部分。最初的问题是 iOS 中的一个错误,我向 Apple 报告了该错误。我在目标中添加了此代码,并明确指定仅支持纵向。现在布局仍在旋转,但至少在设备旋转回纵向时它会恢复正常。
    【解决方案2】:

    当我希望 appDelegate 窗口高于其他所有视图时,有时我会向它们添加视图,而令人讨厌的副作用是我必须显式调用自己的轮换代码,因为没有 VC 来处理它.从好的方面来说,这可能意味着它可能非常适合您的需求 -

    [[[[UIApplication sharedApplication] delegate] window] addSubview:myWebView];
    

    ...根据您的应用程序的方向等,在您首先加载视图之前,您可能需要在显示之前旋转 webView。

    【讨论】:

      猜你喜欢
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多