再一次,我几乎完全确定这是我正在做的事情,但是我几个小时都在对着这个问题喋喋不休。我无处可去。
我正在尝试重新构建应用的视图层次结构。我需要能够全局检测用户界面方向更改,以便正确旋转应用程序下载内容时显示的“正在加载”视图。 (设备方向更改似乎在不同时间触发,导致需要响应这些事件的视图偶尔旋转)。
该应用程序之前已将UINavigationController的视图添加到主窗口。我修改了层次结构,将UIViewController子类的视图添加到主窗口,并将UINavigationController的视图添加到子类的视图中。 UIViewController子类管理显示和放大器。旋转“加载”子视图,我期待应用程序的其余部分继续正常运行,因为在层次结构中插入一个额外的空视图并不觉得我改变太多了。
我最初的问题是UINavigationController的定位 - 它太低20像素,导致状态栏和导航栏之间出现间隙,并切断标签栏的底部20像素。我可以通过将UINavigationController视图的frame属性设置为UIViewController视图的bounds属性来调整此位置,该视图更正了位置。
然而,现在我在导航栏顶部贴了一个20像素高的黑色“叠加层”。如果我猜,我会说它是黑色的,不透明度为50%。此栏上的触摸事件不起作用(例如,如果我尝试通过叠加层点击“后退”按钮,则不会发生任何事情)。高度等于状态栏的高度这一事实并没有逃过我,但我完全不知道是什么原因造成的。
我讨厌这种愚蠢的感觉,所以如果有人对这个问题有任何见解,那么你真的会有所作为。提前谢谢!
答案 0 :(得分:0)
好的,你的帖子中会弹出一些东西。
我最初的问题是。的定位 UINavigationController - 它是20 像素太低
这让我相信它与你的新问题有关。
我可以通过设置来调整它 的框架属性 UINavigationController的视图 边界的属性 UIViewController的视图
这听起来像加载到的视图偏移了20个像素,当你将它设置为边界时,它将它重新定位在windows视图空间。
此栏上的触摸事件不起作用 (例如,如果我尝试点击“返回” 通过叠加按钮,没有 发生)
这是件大事。如果没有将触摸事件发送到视图,那么这意味着操作系统没有看到您正在按的视图(或者更确切地说是您想要的视图),因此视图不会显示消息做某事。
根据您的说法,我相信您的问题在于您刚刚添加的基本视图控制器。尝试重做框架,使其符合您想要的位置。然后取出你输入的代码来设置导航控制器框架。导航控制器也应该适合你添加的视图,一旦你有了主视图所需的位置(显然高出20个像素),那么一切都应该有效。