有没有办法在UINavigationBar的背景中添加图像。通过界面构建器没有直接选项,但我看到应用程序实现了这一点。
任何帮助都将不胜感激。
由于
答案 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);
}
答案 5 :(得分:0)
我最近写了一篇关于UINavigatioBar和UIToolbar背景自定义的文章。您可以通过以下链接找到代码示例和类别,以便在您的应用中无缝集成此功能 - http://leonov.co/2011/04/uinavigationbar-and-uitoolbar-customization-ultimate-solution/