如何在Xcode中自定义iPhone上的导航栏?

时间:2012-01-07 16:12:46

标签: iphone objective-c xcode uinavigationbar

我有以下代码片段:

1。)

[[UINavigationBar appearance] setBackgroundImage:myImage forBarMetrics:UIBarMetricsDefault];

我会把它放在哪里?

或2.)

@implementation UINavigationBar (BackgroundImage)
//This overridden implementation will patch up the NavBar with a custom Image instead of the title
- (void)drawRect:(CGRect)rect {
     UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];
     [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

我会把它放在哪里?

我尝试在我的viewcontroller中添加一个导航栏,但我不知道在哪里放这些代码。

1 个答案:

答案 0 :(得分:1)

Snippet 1仅限iOS 5.0。你可以在applicationDidFinishLaunching:创建导航栏之前将其放在某处。请查看此处了解更多信息:

Snippet 2是您在iOS 5.0之前必须执行的操作。这是UINavigationBar上的一个类别。我之前没有真正看到覆盖drawRect:类别,但看起来确实有效。只需在UINavigationBar项目中创建一个类别,然后添加该代码即可。如下所示:

UINavigationBar+MyCategory.h

@interface UINavigationBar (MyCategory)
- (void)drawRect:(CGRect)rect;
@end

UINavigationBar+MyCategory.m

#import "UINavigationBar+MyCategory.h"

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