gpt4 book ai didi

ios - 如何在 xib 中为不同的 UIViewcontroller 设置不同的导航栏颜色?

转载 作者:技术小花猫 更新时间:2023-10-29 10:59:48 28 4
gpt4 key购买 nike

我正在尝试为项目中的不同 UIViewController 设置不同的 UINavigationBar 颜色。直到现在我尝试在每个 UIViewController 类的 ViewdidAppear 方法中使用以下代码,但它仍然无法正常工作,导航栏的颜色没有改变。

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

请帮帮我

最佳答案

尝试

[[UINavigationBar appearance] setBarTintColor: [UIColor redColor]];

或者,在 iOS 6 上,

[[UINavigationBar appearance] setTintColor:[UIColor redColor]];

如果您有一个导航 Controller 作为 rootViewController,请使用:

    UINavigationController* nc = (UINavigationController*)[[[UIApplication sharedApplication] delegate] window].rootViewController;

然后设置颜色:

[nc.navigationBar setBarTintColor:[UIColor redColor]];

如果你想改变每个 View Controller 的颜色,只需将代码放在每个 viewWillAppear 方法中

如果您不想在每个 View Controller 中覆盖viewWillAppear,您可以为您的项目创建一个 super View Controller 。但如果为时已晚,您还可以创建自定义 UINavigationController 并简单地覆盖 push/pop 方法,例如:

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
[super pushViewController:viewController animated:animated];
[self.navigationBar setBarTintColor:[UIColor redColor]];
}

对四种方法执行此操作:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;

或者至少对于您使用的方法而言。然后在需要另一种条形颜色的 viewController 中覆盖 viewWillAppear

关于ios - 如何在 xib 中为不同的 UIViewcontroller 设置不同的导航栏颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383945/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com