在 Xcode 13 [[UINavigationBar 外观] setBarTintColor 中:无法正常工作?

In Xcode 13 [[UINavigationBar appearance] setBarTintColor: not working properly?

提问人:Naresh 提问时间:9/29/2021 更新时间:9/29/2021 访问量:755

问:

我已将我的 Xcode 更新为 13,后来我的旧项目导航和标签栏颜色中的单词更改为透明。

我的代码是

[[UINavigationBar appearance] setBarTintColor:[UIColor AppThemeColour]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTranslucent:NO];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

我试图添加背景颜色,但导航栏的标题和图像没有出现。

self.navigationController.navigationBar.backgroundColor = [UIColor bOneAppThemeColor];
[[UINavigationBar appearance] setBarTintColor:[UIColor AppThemeColour]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTranslucent:NO];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

我已经研究了下面的链接,但我无法在目标 C 中实现它

https://developer.apple.com/forums/thread/682420

iOS Objective-C Xcode UINingController :UINogingBar

评论


答:

6赞 matt 9/29/2021 #1

你所做的几乎所有事情都是错的(而且已经错了好几年了)。您需要使用 UINavigationBarAppearance(和 UITabBarAppearance)并将它们应用于条形图及其 .设置外观的背景色,而不是其色调颜色。并且永远不要碰酒店。standardAppearancescrollEdgeAppearancetranslucent

在这个简单的示例中,我们使所有导航栏都采用您的主题颜色。根据您的需求和愿望进行修改:

if (@available(iOS 13.0, *)) {
    UINavigationBarAppearance* appear = [UINavigationBarAppearance new];
    appear.backgroundColor = [UIColor AppThemeColor];
    id proxy = [UINavigationBar appearance];
    [proxy setStandardAppearance: appear];
    [proxy setScrollEdgeAppearance: appear];
} else {
    // Fallback on earlier versions
}