设置导航栏外观

Setting Navigation Bar Apperance

我应该在哪里设置导航栏的外观?

我有一个名为 "MainVC" 的视图控制器,它嵌套在导航控制器中。在 "MainVC" 中,我覆盖了 viewWillAppear 并将我的导航控制器的导航栏的背景颜色设置为黄色。但是,当我启动应用程序时,颜色未设置为黄色

当我从 MainVC 导航到另一个 VC,然后返回 MainVC 时,颜色设置正确!!

为什么会这样,我应该在哪里添加代码以便在 MainVC 中正确设置导航栏的背景颜色?

谢谢!

如果您将导航外观项目放在 mainVC 的 init 方法中,并且也在您的 ViewWillAppear 中,它将起作用,如下所示:

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self==nil)
        return nil;
    [[[self navigationController] navigationBar] setTranslucent:YES];
    [[[self navigationController ] navigationBar] setBarTintColor:[UIColor clearColor]];
    return self;
}

-(void)viewWillAppear:(BOOL)animated
{
     [super viewWillAppear:animated];
     [[[self navigationController] navigationBar] setTranslucent:YES];
     [[[self navigationController ] navigationBar] setBarTintColor:[UIColor clearColor]];
}

无需设置任何其他内容,只需将其全部保存在您的 mainVC 的实现文件中即可,祝您好运。哦,是的,另一方面,这就是为什么这样做:

ViewDidLoad 将在导航堆栈中被调用一次,直到它从堆栈中弹出,因此您可以使用导航控制器所需的属性初始化视图控制器,您可以对每个 viewcontroller 来控制 navigaiotnbar 的视图。将它放在 init 方法中,在视图加载到屏幕之前设置它,然后将它放在你的 viewWillAppear 中设置它,这样当你从视图控制器转换到堆栈上的视图控制器时,假设这个视图控制器是仍在堆栈上, viewWillAppear 会将导航栏更改回您想要的样式。所以,这个视图控制器第一次加载到堆栈上时,导航栏样式会发生两次,没什么大不了的,但从那时起,它只会在导航堆栈上再次出现时发生一次.

在 MainVC 中设置,在您开始设置 Navigation 的 Navigation 中

在 ViewDidLoad 方法中

self.navigationController.navigationBar.barTintColor=ColorNav;
self.navigationController.navigationBar.translucent=FALSE;