堆叠 presentViewController 后 statusBarFrame = 0
Posted
技术标签:
【中文标题】堆叠 presentViewController 后 statusBarFrame = 0【英文标题】:statusBarFrame = 0 after stacked presentViewController 【发布时间】:2012-11-12 18:04:31 【问题描述】:-
我的主视图控制器调用
presentViewController
来显示配置屏幕。
该配置屏幕上的一个按钮调用presentViewController
以允许用户选择照片。
一旦第二个视图控制器被解除,第一个视图控制器会在 ios 6 的状态栏下重绘(在 iOS 5 上可以正常工作)。
在第一个配置控制器(模态显示的那个)的 viewWillAppear 方法中,我尝试了几件事:
检查 statusBarFrame(第一次查看时返回20
;后续查看时返回 20
)
检查主屏幕的框架(第一次查看时返回0, 20, 320, 460
,后续查看时返回0, 0
)
手动将框架的 y 坐标设置为 20(即使自动调整大小掩码设置为无,iOS 也会将其更改回 0)
在这一点上,除了手动将所有子视图向下移动 20 像素之外,我什么都想不出来,这太笨拙了。关于可能导致此问题的任何想法?
iOS 6 中的哪些变化可能导致此问题?
【问题讨论】:
嗨,我在 iOS 7 上遇到了同样的问题。我已经尝试了你的解决方案,但它仍然存在。你知道如何为 iOS 7 修复它吗?谢谢 【参考方案1】:我不知道为什么,但是通过删除 iOS 6 旋转方法解决了这个问题,因为该应用仅支持纵向(shouldAutorotate 和supportedInterfaceOrientations),所以这些方法未被使用。
【讨论】:
感谢您的更新。我也遇到了这个错误,我听从了你的建议(实际上,只需删除 supportedInterfaceOrientations 方法对我有用)。 嗯,这行得通。感谢分享。我认为它与自动布局有关。它甚至发生在 iOS8 中(我上次测试为 8.1)。 事实证明,它还修复了另一个错误。相同的场景:呈现一个模态然后关闭。键盘只是在某处偏移。从那时起,每次您选择另一个文本字段时,它都会自行偏移。但是这个仅限于 iOS7,只有稀疏的 AutoLayout 实现。 如果您真的需要覆盖-supportedInterfaceOrientation
方法,这里有 另一个 修复方法:***.com/a/14530123/425694。在我的情况下,我必须坚持前面rootViewController
的纵向方向。这会覆盖我设置为支持所有设备方向的 plist 配置。适用于 iOS7 和 8。不过,在呈现模式时,iOS7 需要做更多的工作。以上是关于堆叠 presentViewController 后 statusBarFrame = 0的主要内容,如果未能解决你的问题,请参考以下文章
presentViewController pushViewController和presentModalViewController