我已使用以下代码成功将背景图像添加到我的UINavigationBar中:
UIImageView *barView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"subHeader_lg.png"]];
[calculatorBar addSubview:barView];
[barView release];
但是,使用此方法,图像将覆盖视图的标题。
如果我进一步导航到应用程序,然后返回,则标题会出现在背景图像的顶部,如下所示:
任何想法如何让我的标题从一开始就显示在顶部?
我尝试将barView
推到后面,但这会让它隐藏在其他所有内容之后。
编辑:
似乎自定义绘制函数是已接受的答案,但我无法调用绘制函数。我在appdelegate.m文件的底部有这段代码
@implementation UINavigationBar (UINavigationBarCustomDraw)
- (void)drawRect:(CGRect)rect
{
UIImage *image = [UIImage imageNamed: @"subHeader_lg.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
答案 0 :(得分:1)
当您调用“addSubview”时,它会将其添加到已添加的任何视图上方,从而覆盖标题。
你想要的是
[calculatorBar insertSubview:barView atIndex:0];
但是,这不会使其“坚持”后续推送,因此请使用http://www.developers-life.com/custom-uinavigationbar-with-image-and-back-button.html中描述的方法获得更好的解决方案。
同样在iOS 5中,Apple添加了内置方式来自定义导航栏,请参阅http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAppearance_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40010906
答案 1 :(得分:1)
要在导航栏上设置背景图像,请使用以下内容。
在iOS 5.x上,使用 [calculatorBar setBackgroundImage:barView.image forBarMetrics:0];
在iOS 4.x上使用 calculatorBar.layer.contents =(id)barView.image.CGImage;