UIView覆盖iPhone状态/运营商栏

时间:2010-10-06 05:10:38

标签: iphone cocoa-touch uiview uiviewcontroller uialertview

我正在尝试创建一个模仿UIView行为的UIViewController(和关联的UIAlertView)。根据我的要求,从头开始创建我自己的实现似乎比尝试子类化和修改UIAlertView更简洁。为了做到这一点,我得到了对app delegate的引用,然后添加UIViewController.view(大约为0.6的alpha)作为主应用程序窗口的子视图。这意味着它将显示在屏幕上所有其他视图的顶部,并模拟UIAlertView中的灰色背景。

一切运行良好,但UIView(即UIViewController.view)未覆盖屏幕顶部的状态/运营商栏。这意味着除了载板条外,所有的屏幕都变暗了,看起来有点奇怪!有没有办法让UIView出现在承运人栏的顶部?我听说过在应用程序中添加第二个UIWindow的想法,但这似乎不可行(因为Apple文档说应该只在应用程序中有一个UIWindow),即使这样是最好的解决方案,我不确定这种解决方案的技术实现。

1 个答案:

答案 0 :(得分:1)

为了覆盖状态栏而不隐藏状态栏,您需要在状态栏上方显示某些内容,并且由于状态栏显示在另一个窗口中,您必须使用带有UIWindowLevelStatusBar的第二个窗口。

我已经完成了这样的事情,它确实有效,但感觉就像是一个黑客,感谢Apple的文档,或者缺乏它。您可以像往常一样创建第二个窗口。要隐藏它,您应该设置其隐藏属性并释放它。为了确保你没有泄漏窗口我建议继承UIWindow进行调试以及重写其dealloc以包含NSLog。另外,看看UIApplication的windows属性,它应该正确反映窗口关闭。

后方最大的痛苦是设备方向的改变。