我想在UINavigationController上方显示一个UILabel。问题在于,如果我将UILabel作为UIWindow的子视图添加,它不会自动旋转,因为它不是UIViewController的子视图(UIViewController会自动处理旋转期间更新子视图的情况)。
我最初使用的层次结构如下:
- UIWindow
- UILabel
- UINavigationController
所以我想可以采用以下层次结构:
- UIWindow
- UIViewController
- UIView
- UILabel
- UINavigationController
- UIView
- UIViewController
这样可以在UINavigationController的导航栏之上显示标签,同时由于其是UIViewController的子视图,因此也会自动旋转。
然而,当我尝试将UINavigationController添加为视图的子视图时,出现了问题:
[myViewController.view addSubview:myNavigationController.view];
出现了一个向下偏移20像素的问题,我猜测这是因为它认为需要为状态栏腾出空间。但是,由于UINavigationController被放置在一个不覆盖状态栏的UIView中,所以它错误地添加了额外的20像素。换句话说,UINavigationBar的顶部位于屏幕的第40个像素标记处,而不是在20像素处。
有没有一种简单的方法来将UINavigationController及其所有元素(例如导航栏,工具栏,根视图控制器)上移20像素?或者让它知道它不应该为状态栏进行补偿?
如果没有,我想我需要使用上面提到的第一个层次结构,并找出如何旋转标签,使它与导航栏的旋转一致。在哪里可以找到更多关于如何做到这一点的信息?
注:通过“在导航栏顶部显示标签”,我的意思是它应该覆盖在导航栏的顶部...它不能简单地包裹在一个栏按钮项中并作为导航栏项目之一放置。