为什么我的应用程序导航栏上有20像素高的暗覆盖?

时间:2011-02-14 23:12:04

标签: iphone cocoa-touch uiviewcontroller uinavigationcontroller uinavigationbar

再一次,我几乎完全确定这是我正在做的事情,但是我几个小时都在对着这个问题喋喋不休。我无处可去。

我正在尝试重新构建应用的视图层次结构。我需要能够全局检测用户界面方向更改,以便正确旋转应用程序下载内容时显示的“正在加载”视图。 (设备方向更改似乎在不同时间触发,导致需要响应这些事件的视图偶尔旋转)。

该应用程序之前已将UINavigationController的视图添加到主窗口。我修改了层次结构,将UIViewController子类的视图添加到主窗口,并将UINavigationController的视图添加到子类的视图中。 UIViewController子类管理显示和放大器。旋转“加载”子视图,我期待应用程序的其余部分继续正常运行,因为在层次结构中插入一个额外的空视图并不觉得我改变太多了。

我最初的问题是UINavigationController的定位 - 它太低20像素,导致状态栏和导航栏之间出现间隙,并切断标签栏的底部20像素。我可以通过将UINavigationController视图的frame属性设置为UIViewController视图的bounds属性来调整此位置,该视图更正了位置。

然而,现在我在导航栏顶部贴了一个20像素高的黑色“叠加层”。如果我猜,我会说它是黑色的,不透明度为50%。此栏上的触摸事件不起作用(例如,如果我尝试通过叠加层点击“后退”按钮,则不会发生任何事情)。高度等于状态栏的高度这一事实并没有逃过我,但我完全不知道是什么原因造成的。

Ridiculous navigation bar problem

我讨厌这种愚蠢的感觉,所以如果有人对这个问题有任何见解,那么你真的会有所作为。提前谢谢!

1 个答案:

答案 0 :(得分:0)

好的,你的帖子中会弹出一些东西。

  

我最初的问题是。的定位   UINavigationController - 它是20   像素太低

这让我相信它与你的新问题有关。

  

我可以通过设置来调整它   的框架属性   UINavigationController的视图   边界的属性   UIViewController的视图

这听起来像加载到的视图偏移了20个像素,当你将它设置为边界时,它将它重新定位在windows视图空间。

  

此栏上的触摸事件不起作用   (例如,如果我尝试点击“返回”   通过叠加按钮,没有   发生)

这是件大事。如果没有将触摸事件发送到视图,那么这意味着操作系统没有看到您正在按的视图(或者更确切地说是您想要的视图),因此视图不会显示消息做某事。

根据您的说法,我相信您的问题在于您刚刚添加的基本视图控制器。尝试重做框架,使其符合您想要的位置。然后取出你输入的代码来设置导航控制器框架。导航控制器也应该适合你添加的视图,一旦你有了主视图所需的位置(显然高出20个像素),那么一切都应该有效。