在UINavigationBar中添加背景图像

时间:2010-07-22 07:05:04

标签: iphone uikit uinavigationbar

有没有办法在UINavigationBar的背景中添加图像。通过界面构建​​器没有直接选项,但我看到应用程序实现了这一点。

任何帮助都将不胜感激。

由于

6 个答案:

答案 0 :(得分:2)

创建UIView并将其添加为子视图。

修改:您现在可以使用setBackgroundImage:forBarMetrics:。资料来源:https://stackoverflow.com/a/7765102/313875

答案 1 :(得分:2)

使用此代码

        UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
        [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

这将有效。

答案 2 :(得分:0)

只需将您的背景添加为子视图,如jrtc27建议的那样,并根据您的需要更改色调颜色。

答案 3 :(得分:0)

您也可以覆盖drawRect函数。

@implementation UINavigationBar (UINavigationBarCustom)

- (void)drawRect:(CGRect)rect {

    UIImage *image = [UIImage imageNamed:@"nav_bar_logo.png"];
    [image drawInRect:rect];
}

@end

答案 4 :(得分:0)

您还可以覆盖UINavigationBar类别类中的 drawLayer:inContext:方法。在 drawLayer:inContext:方法中,您可以绘制要使用的背景图像。如果您愿意,也可以使用不同大小的图像进行纵向和横向定位。

- (void) drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
    if ([self isMemberOfClass:[UINavigationBar class]] == NO) {
        return;
    }

    UIImage *image = (self.frame.size.width > 320) ?
                        [UINavigationBar bgImageLandscape] : [UINavigationBar bgImagePortrait];
    CGContextClip(context);
    CGContextTranslateCTM(context, 0, image.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextDrawImage(context, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage);
}

作为一个关于自定义UINavigationBar thisthis外观的完整演示Xcode项目可能会有所帮助。

答案 5 :(得分:0)

我最近写了一篇关于UINavigatioBar和UIToolbar背景自定义的文章。您可以通过以下链接找到代码示例和类别,以便在您的应用中无缝集成此功能 - http://leonov.co/2011/04/uinavigationbar-and-uitoolbar-customization-ultimate-solution/