UINavigationBar 自定义标题被背景隐藏

Posted

技术标签:

【中文标题】UINavigationBar 自定义标题被背景隐藏【英文标题】:UINavigationBar custom title being hidden by background 【发布时间】:2011-09-08 01:32:09 【问题描述】:

我正在使用此代码将自定义UIImageView 添加到我的UINavigationBar

UIImageView *background = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
[background setImage:[UIImage imageNamed:@"nav_background.png"]];
[background setTag:kTagForReference];
[self.navigationController.navigationBar insertSubview:background atIndex:0];

然后我使用以下代码添加自定义标题:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
... 
[self.navigationItem setTitleView:label];
[label release];

但在我的一些推送视图中,标题被隐藏(或不可见)。如果标题消失,我似乎无法将两个以上的视图推送到堆栈上。

我试图将我的UIImageView 背景强制到栏的后面,但这仍然没有帮助。我已经打印了UINavigationBar 的子视图,我可以看到 UILabel 在那里,我只是看不到它!

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

如果您可以运行dumpWindows() function,输出将显示视图层次结构,以便您查看覆盖它的视图。

【讨论】:

【参考方案2】:

您很可能希望使用UIToolBar 而不是NavigationBar。然后您可以将子视图添加到UIToolbar

将 UILabel 带到最前面的视图。

[self.view bringSubviewToFront: label];

【讨论】:

如果我使用UIToolbar,那么我的所有导航堆栈会发生什么? 只要把 UIToolbar 添加到你的控制器,然后隐藏 NavigationBar,什么都没有。您甚至可以设置“返回”或“完成”按钮来弹出或关闭导航控制器。

以上是关于UINavigationBar 自定义标题被背景隐藏的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 自定义背景与悬垂(iOS 5)

如何使用自定义背景图像从 UINavigationBar 和 UIToolbar 中删除圆角?

iOS 11 UINavigationBar 自定义背景总是在状态栏下扩展

iPhone - 如何使用我的纹理背景自定义 UINavigationBar 后退按钮

自定义 UINavigationBar 背景适用于除一个之外的所有导航控制器

创建此自定义 UINavigationbar ios 的最佳方法