0

我有一个设置导航栏外观的地方navigation view controllerroot view controller它看起来像这样:

UIImage *navBarImage = [UIImage imageNamed:@"GreyUp.png"];
[[UINavigationBar appearance] setBackgroundImage:navBarImage
                                       forBarMetrics:UIBarMetricsDefault];

不过,这件事改变了navBar以下所有视图控制器的外观,这是我不喜欢的。我想要一个navBar用于根视图,另一个用于不同的视图。如何做到这一点?

4

5 回答 5

2

外观意味着它适用于您的所有应用程序导航栏,因此您可以将其添加到您的所有视图控制器中

self.navigationController.navigationBar.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"GreyUp.png"]];
于 2013-01-16T11:55:35.463 回答
1

是的,它可以实现在视图中使用它会出现

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar.png"] forBarMetrics:UIBarMetricsDefault];

// 用于自定义后退按钮

UIButton*    btnBack= [Utils createButtonWithTarget:self selector:@selector(btnBackClicked) frame:CGRectMake(0,5, 100, 40) bgimageName:@"tab_back.png" tag:0];//My method use yours
        self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithCustomView:btnBack];
      //use btnBack ref to change font title title color etc

我的 Utils 类代码来创建按钮

+ (UIButton *)createButtonWithTarget:(id)target
                            selector:(SEL)selector
                               frame:(CGRect)frame
                         bgimageName:(NSString *)imageName
                                 tag:(NSInteger)aTag{
    UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    button.frame = frame;
    [button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];   
    [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
    // in case the parent view draws with a custom color or gradient, use a transparent color
    button.backgroundColor = [UIColor clearColor];
    button.showsTouchWhenHighlighted = YES;
    button.tag = aTag;
    return [button autorelease];
}
于 2013-01-16T11:53:49.987 回答
1

您可以为不同的视图设置导航栏

 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"login.png"] forBarMetrics:UIBarMetricsDefault];  

导航栏上的获取按钮,您可以按照我的回答

如何在导航栏中以编程方式设置图片?

于 2013-01-16T12:02:36.807 回答
1

viewWillAppearrootViewController 中,自定义你的 navigationBar。

viewWillDisAppearrootViewController 中,执行您想要为导航层次结构的其余部分显示的更改。

于 2013-01-16T12:18:37.127 回答
0

为导航栏设置背景颜色或使用外观方法。在 viewWillAppear 中你想在哪里更改导航栏的图像

于 2013-01-18T09:43:15.813 回答