【问题标题】:setStatusBarOrientation:animated: not working in iOS 6setStatusBarOrientation:animated: 在 iOS 6 中不工作
【发布时间】:2012-09-15 20:22:53
【问题描述】:

当用户观看完视频(它允许在横向模式下观看)时,我使用此代码强制将方向更改回纵向,然后将视频视图控制器从导航控制器中弹出:

//set statusbar to the desired rotation position
[[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];

//present/dismiss viewcontroller in order to activate rotating.
UIViewController *mVC = [[[UIViewController alloc] init] autorelease];
[self presentModalViewController:mVC animated:NO];
[self dismissModalViewControllerAnimated:NO];

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

iOS 5.1.1 之前,这一直运行良好。我什至尝试使用新的呈现/解雇方法,在另一篇文章中读到现在应该使用这些方法:

[self presentViewController:mVC animated:NO completion:NULL];
[self dismissViewControllerAnimated:NO completion:NULL];

问题是它根本不起作用。在我将视频查看器旋转到横向然后弹出它之后,我的设置视图(表格视图控制器)又回来了,但也处于横向模式。

我什至尝试过Here的提示

setStatusBarOrientation:animated: 方法并没有被彻底弃用。但是它现在只有在最顶部的全屏视图控制器的 supportedInterfaceOrientations 方法返回 0 时才有效。这将确保状态栏方向一致的责任置于调用者的手。”

所以我尝试设置一个标志来强制 supportedInterfaceOrientationsreturn 0(在调用上面的第一个代码块之前),但它也不起作用。

有人对此有解决方案吗? 感谢您的时间和精力。

【问题讨论】:

  • 完全相同的问题,但和你一样,我没有找到解决方案。有人吗?

标签: objective-c cocoa-touch ios6 uiinterfaceorientation autorotate


【解决方案1】:

setStatusBarOrientation 方法稍微改变了行为。根据苹果文档:

setStatusBarOrientation:animated: 方法未被弃用 彻底。它现在仅在受支持的InterfaceOrientations 时才有效 最顶层全屏视图控制器的方法返回 0

【讨论】:

  • 找这个答案很久了,偶然发现这个,谢谢!
  • 这很奇怪,因为文档还说“此方法返回的值不能为 0”
  • 如果您确实希望允许多个方向,则此想法将行不通。
【解决方案2】:

您的根视图控制器应该对方法 shouldAutorotate 回答 false,以便您的应用响应 setStatusBarOrientation:animated

来自 Apple 文档:“但是,如果您的应用程序具有可旋转的窗口内容,则不应使用此方法任意设置状态栏方向”

为了理解这一点,在shouldAutorotate方法中放置一个断点,你会看到它在设置状态栏方向后被称为juste。

【讨论】:

    【解决方案3】:

    这是我修复的方法。

    https://stackoverflow.com/a/14530123/1901733

    当前问题与上述网址中的问题相关联。

    statusBarOrientation 在 ios6 中是一个真正的问题。

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 2012-08-24
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      相关资源
      最近更新 更多