In Xcode 13 [[UINavigationBar appearance] setBarTintColor: 工作不正常?
In Xcode 13 [[UINavigationBar appearance] setBarTintColor: not working properly?
我已将 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]];
我在下面研究过这个 link 但我无法在 Objective C
中实现它
您所做的几乎所有事情都是错误的(而且多年来一直是错误的)。您需要使用 UINavigationBarAppearance(和 UITabBarAppearance)并将它们应用于栏的 standardAppearance
及其 scrollEdgeAppearance
。设置外观的背景颜色,而不是它的色调。永远不要碰 translucent
属性。
在这个简单的例子中,我们让所有的导航栏都采用您的主题颜色。修改以满足您的需要和愿望:
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
}
我已将 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]];
我在下面研究过这个 link 但我无法在 Objective C
中实现它您所做的几乎所有事情都是错误的(而且多年来一直是错误的)。您需要使用 UINavigationBarAppearance(和 UITabBarAppearance)并将它们应用于栏的 standardAppearance
及其 scrollEdgeAppearance
。设置外观的背景颜色,而不是它的色调。永远不要碰 translucent
属性。
在这个简单的例子中,我们让所有的导航栏都采用您的主题颜色。修改以满足您的需要和愿望:
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
}