重写UINavigationBar drawRect函数不起作用

时间:2011-07-24 14:11:45

标签: iphone objective-c xcode uinavigationcontroller uinavigationbar

我有一个带导航栏控制器的简单应用程序,我想在覆盖drawRect功能时更改其导航栏。我在这里阅读了许多地方,我需要做的就是将代码粘贴到appDelegate上方。可悲的是,它似乎没有为我做任何事情。在尝试添加图像之前,我尝试将导航栏的颜色更改为开头,但是再一次,没有任何反应。我在这里缺少什么

我厌倦了在AppDelegate上面插入此代码:

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect {
 UIColor *color = [UIColor redColor];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
CGContextFillRect(context, rect);
  }
 @end

使用背景图片:

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect {
// Drawing code 
UIImage *img = [UIImage imageNamed: @"13.png"];
[img drawInRect:CGRectMake(0, 0, 320, self.frame.size.height)];    
}
@end

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

此代码在UINavigationBar上声明了一个类别,并重新定义了其drawRect:方法的行为。尝试将代码段(第二个)放在app委托的.m文件的末尾。

虽然第一个应该有效,但另一个更干净的选择是将该类别写入您将包含在应用代表中的单独文件中。

还要确保您要加载的图片存在于应用包中。

答案 1 :(得分:0)

好的 - 发现了解决方案!这似乎不适用于iPhone 5.0模拟器!