2012-04-15 73 views
2

我改变UINavigationBar背景图片重载方法更改UINavigationBar的背景图片为默认 - 的iOS 4.3

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

@end 

但在一些UIViewControllers我需要删除此背景图像。我如何做到这一点?

+0

你是否继承UINavigationBar? – Otium 2012-04-15 14:55:32

+0

不,我更新了我的代码。 – 2012-04-15 14:57:13

回答

2

你可能看this blog post from Sebastian Celis。它解决了你面临的问题。

也许还检查this

+0

不,他解释了如何实现UINavigationBar子类以及如何在横向和默认模式下更改UINavigationBar图像。我知道如何做到这一点。我需要将UINavigationBar返回到UIBarStyleDefault。简单的方法:\t self.navigationController.navigationBar.barStyle = UIBarStyleDefault; 没有帮助 – 2012-04-15 16:06:19

+0

您需要继承UINavigationBar,而不是创建它的类别 – Otium 2012-04-15 16:09:07

0

测试这样

+ (void)setNavigationbarBackground:(UINavigationBar *)nBar imageName:(NSString *)imgName { 
    if([nBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 
     [nBar setBackgroundImage:[UIImage imageNamed:imgName] forBarMetrics:UIBarMetricsDefault]; 
    } else { 
     [nBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:imgName]]]; 
    } 
} 
+0

我知道如何自定义我的NavigationBar。我需要扭转这个动作 – 2012-04-15 15:01:54

+0

哎呀我错了,对不起 – WhiteTiger 2012-04-15 15:03:21

+2

这种测试,对我有用。 [nBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; – WhiteTiger 2012-04-15 15:15:49