使用图像作为导航栏 iOS 5

Posted

技术标签:

【中文标题】使用图像作为导航栏 iOS 5【英文标题】:Using Image as Navigation Bar iOS 5 【发布时间】:2012-09-07 01:29:50 【问题描述】:

我有一个包含许多视图的应用。每个视图都由故事板中的导航控制器控制。我想使用自定义图像作为导航栏。我已经创建了图像,但不确定实现它的过程。代码:

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect

    UIImage *image = [UIImage imageNamed: @"topbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

@end

似乎不起作用。我将此代码放在视图控制器中。我应该使用不同的方法来设置视图控制器还是为导航控制器设置单独的控制器?如果是这样,我该怎么做?

这是故事板中的布局:

谢谢。

【问题讨论】:

这会被调用吗?是不是View本身中的drawRect,不在ViewController中? 【参考方案1】:

由于您使用的是 ios 5,因此您可以这样做:

UIImage *image = [UIImage imageNamed:@"topbar"];
[self.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

您不需要子类,可以使用常规 UINavigationBar。

【讨论】:

【参考方案2】:

不确定这是否 100% 适合您的情况,但您至少可以用这样的图像覆盖导航栏...

self.navigationItem.titleView = [[UIImageView alloc] initWithImage: navBarImage];

图片将在标题正常显示的位置居中,但如果足够大,它将覆盖整个导航栏。

【讨论】:

是的,或者 viewWillAppear: 方法。

以上是关于使用图像作为导航栏 iOS 5的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 导航栏背景图片问题

横屏模式下 iOS 5 iPad 上的导航栏背景图像

iOS 8 启动图像文件 - 导航栏和状态栏

导航左栏按钮项作为图像徽标

iOS 13 大型导航栏外观 + Tabbar 图像

在 iOS 7 中设置导航栏图像