如何在 UINavigationController 的 bar 上方添加 UIImageView

Posted

技术标签:

【中文标题】如何在 UINavigationController 的 bar 上方添加 UIImageView【英文标题】:How to add UIImageView above UINavigationController's bar 【发布时间】:2012-05-29 19:25:40 【问题描述】:

我有基于 UINavigationController 的 UITableView。单击任何行应用程序后,切换到另一个具有 UINavigationController 的视图。在新视图中,我想在 UINavigationController 的栏上方添加 UIImageView 但不覆盖它。我该怎么做?

【问题讨论】:

“高于栏,但不覆盖”?你知道这是矛盾的吗? 以上是什么意思?在屏幕上垂直较高的位置,还是在导航栏的顶部分层?如果是后者,则同上 CodaFi,除非您希望它是透明的,在这种情况下,这样说会消除您问题中的很多困惑和歧义。 @MartinH 是的,在屏幕上的垂直位置较高。对不起我的英语不好。 【参考方案1】:

(根据您的评论)这是我将图像放置在 y 坐标“上方”的方法,而不是子视图。

在新视图中,

隐藏navigationController的navigationBar [navigationController.navigationBar setHidden:YES];

添加一个 UIToolbar,其原点是您感兴趣的,大小为 (320, 44),假设您在 iPhone 上执行此操作,并且图像垂直位于该栏上方。

如果您转到导航栏上方没有图像的旧/上一个视图,请记住取消隐藏导航栏。

【讨论】:

【参考方案2】:

将您的 UIImageView 添加为 self.navigationController.view 的子视图,并提供接近或小于零的坐标以将其定位到高于 UINavigationBar 的位置。

【讨论】:

【参考方案3】:

我找到了更简单的解决方案。只需要设置self.navigationController.navigationBar所需的frame坐标: [self.navigationController.navigationBar setFrame:CGRectMakeCoordinates];

【讨论】:

它对我不起作用 :(,有什么建议吗?我在 UITabBarController 中有导航栏。

以上是关于如何在 UINavigationController 的 bar 上方添加 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 中设置时图像不显示

将 managedObjectContext 发送到 viewController 崩溃

ID:[...] 的 NSManagedObject 已失效

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

为啥我似乎必须在 iOS 应用程序委托中键入 window.rootViewController?

UINavigationController - 何时释放推送的视图控制器等