我的问题很简单。我使用子类化导航栏的方法,然后使用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
为什么我的图片可能无法显示而只是获得白色背景的任何想法?我的图片位于资源文件夹下的项目中。
谢谢大家。 :)
答案 0 :(得分:1)
当我在测试项目中实现您的代码时,我确实看到了图像。但是我做了
[image drawInRect:self.frame];
图像最终覆盖了导航栏的下半部分,上半部分是白色的(就像你看到的那样)。也许你的形象被画得太低了?尝试使用rect值,或者像我一样将其设置为self.frame,看看会发生什么。如果您仍然没有看到图像,请确保您的导航栏类实际设置为界面构建器中的自定义类,并且正在调用该代码来绘制导航栏(可能需要使用print语句)。
答案 1 :(得分:0)
[image drawInRect:self.bounds];
并且不要忘记navigation_bg@2x.png
用于Retina-displays