【问题标题】:iPhone hide status bar and recovers will cause the messed layout of viewiPhone隐藏状态栏和恢复会导致视图布局混乱
【发布时间】:2013-11-08 13:40:32
【问题描述】:

应用程序有一个 TabController 和 4 个子视图控制器由它控制。

由于我想在状态栏上设置消息,我必须在状态栏所在的位置创建 UILabel 并隐藏原来的。为了使原始状态栏恢复原状,我创建了一个计时器,当时间到期时,状态栏将被取消隐藏并删除 UILabel。

假设我停留在一个视图并设置消息。现在消息可以正常显示了。在时间到期之前,我通过点击 Tab Control 切换到另一个视图。

现在问题出现了:UILabel消失了(此时状态栏还没有回来)。只有选定的视图显示并占据 UILabel 刚刚覆盖的区域。

时间到了,状态栏又回来了,但并没有推动应用重新组织视图和状态栏的布局。然后状态栏与视图重叠。

我想我可能不理解 iOS 中的视图组织规则。请帮助启发我..

非常感谢

【问题讨论】:

  • 将您的状态消息添加到窗口中,它不会干扰标签栏控制器及其子视图控制器。
  • 抱歉,我不确定我是否完全理解“将您的状态消息添加到窗口”。请帮忙澄清一下
  • 当控制器切换时,您添加到控制器视图中的标签会变得混乱。将它添加到上面的单元,窗口。
  • 您能否帮助进一步澄清“将其添加到上面的单元,窗口”。 ?

标签: ios iphone statusbar


【解决方案1】:

如果您希望UILabel 高于其他所有内容,请将其添加到窗口中。每个视图控制器的view 都有一个window 属性,大概它是标签栏控制器的所有视图控制器的同一个窗口。

[self.view.window addSubview:messageLabel]; 

【讨论】:

  • 感谢耐心的解释。我真的按照建议做。问题仍然存在。你能帮忙分享电子邮件地址吗?你能帮忙复习一下sn-p吗?
  • 经过一些进一步的调试,我发现:(在iPhone4s上)正常情况下,视图高度为411。出现问题时,高度更改为431。如果我硬编码将帧高度更改回 411,则视图将正常显示。我真的很想知道 431 是怎么计算出来的……
  • 目前,我在 viewDidAppear 回调中硬编码了视图高度的大小。我相信对于紧急的日程安排,这是一个折中的解决方案。我仍然愿意接受任何建议并跟进
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多