Iphone自定义导航栏 - 白盒错误

时间:2011-04-12 06:09:39

标签: objective-c ios4 uinavigationbar

我的问题很简单。我使用子类化导航栏的方法,然后使用drawRect尝试绘制我自己的自定义导航栏图像。但是,它不会绘制我的图像...只是一个空白的空格。

我项目的结构是一个标签栏,每个标签下都有一个导航控制器。每个导航控制器都有一个导航栏,我已将这些栏设置为IB中的自定义类(customNavBar)。

在我的customNavBar.h文件中,我有:

@interface customNavBar : UINavigationBar {
}

@end

在我的customNavBar.m文件中,我有:

#import "customNavBar.h"


@implementation customNavBar

-(void) dealloc{
    [super dealloc];
}


- (void)drawRect:(CGRect)rect
{
    UIImage *image = [UIImage imageNamed:@"navigation_bg.png"];
    [image drawInRect:CGRectMake(55, 0, self.frame.size.width, self.frame.size.height)];
}

@end

为什么我的图片可能无法显示而只是获得白色背景的任何想法?我的图片位于资源文件夹下的项目中。

谢谢大家。 :)

2 个答案:

答案 0 :(得分:1)

当我在测试项目中实现您的代码时,我确实看到了图像。但是我做了

[image drawInRect:self.frame];

图像最终覆盖了导航栏的下半部分,上半部分是白色的(就像你看到的那样)。也许你的形象被画得太低了?尝试使用rect值,或者像我一样将其设置为self.frame,看看会发生什么。如果您仍然没有看到图像,请确保您的导航栏类实际设置为界面构建器中的自定义类,并且正在调用该代码来绘制导航栏(可能需要使用print语句)。

答案 1 :(得分:0)

实际应该是:

[image drawInRect:self.bounds];

并且不要忘记navigation_bg@2x.png用于Retina-displays