第二个 UINavigationBar 的颜色不同

Color shade is different on second UINavigationBar

我在 AppDelegate.m 中有一个代码将所有 UINavigationBar 十六进制颜色设置为 #125687

代码来自 AppDelegate.m

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]



@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x125687)];

这是问题所在:我在 viewcontroller 中将两个 UINavigationBar 放在彼此的顶部,因此 UINavigationBar 位于状态栏下方。状态栏下方的导航栏位于主导航栏下方。 第二个导航栏的颜色与主导航栏不同。

这是它的样子:

(第二个导航栏是颜色比标题栏 "Community" 颜色浅的导航栏)

问题:如何修复它使两个 UINavigationBar 具有相同的十六进制颜色 (#125687)?

UIStatusBar 的 Conor 自动设置为与 UINavigationBar 的颜色匹配:

self.navigationController.navigationBar.barTintColor

请尝试将其设置为您想要的颜色。

编辑:

代替 2 个导航栏,你能试试这个吗

UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, 320, 22)];
statusBarView.backgroundColor = [UIColor yellowColor]; // Replace this with your color
[self.navigationController.navigationBar addSubview:statusBarView];

不要使用两个导航栏。

您可以简单地扩展您的导航栏。 您可以将 UIViewController 嵌入 UINavigationController

或者

要将单个导航栏扩展到状态栏下方,您可以使用以下方法

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
   return UIBarPositionTopAttached;
}

参考this answer