无法设置模态视图控制器的导航栏颜色

Posted

技术标签:

【中文标题】无法设置模态视图控制器的导航栏颜色【英文标题】:Unable to set navigation bar color of modal view controller 【发布时间】:2015-08-18 07:07:45 【问题描述】:

我正在 iPhone / ios 8 上展示这样的模态视图控制器:

UIApplication*          application        = [UIApplication sharedApplication];
UIWindow*               window             = application.windows[0];
UIViewController*       rootViewController = window.rootViewController;
SomeViewController*     someViewController;
UINavigationController* navigationController;

someViewController   = [[SomeViewController alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:someViewController];

// Set everything to black.
navigationController.navigationBar.barTintColor = [UIColor blackColor];
navigationController.navigationBar.tintColor    = [UIColor blackColor];
navigationController.navigationBar.barStyle     = UIBarStyleBlack;

navigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[rootViewController presentViewController:navigationController animated:YES completion:nil];

SomeViewController 是一个空/新鲜的视图控制器,什么都不做(除了尝试将导航栏设置为黑色,但没有成功)。

这是在使用情节提要的应用程序中,并以 NVSlideMenuController 作为窗口的根。

出现的情况是视图控制器出现了,但导航栏/似乎完全透明,因为当我将someViewController 的背景颜色设置为红色时,整个屏幕都是红色的(标题除外)。应用的其余部分有一个透明的导航栏。

另一件可能相关的事情是,当应用程序进入后台(使用 iPhone 主页按钮)然后再次进入前台时,视图控制器不再可见。

我在这里遗漏了什么或做错了什么?

【问题讨论】:

试试这个,[rootViewController setNavigationBarHidden:TRUE]; @Larcerax rootViewController 是一个没有setNavigationBarHidden:UIViewController 【参考方案1】:

试试下面的代码,可能是你的解决方案

#define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:r/256.f green:g/256.f blue:b/256.f alpha:a]

#define ColorNav RGBACOLOR(13, 127, 161, 1.0)

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

【讨论】:

#define ColorNav RGBACOLOR(13, 127, 161, 1.0) #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:r/256.f green:g/256.f blue:b/256.f alpha:a] 请将 cmets 移至它们所属的答案。 @Losiowaty,在我给出的答案中添加了宏。 :-) 我确实错过了translucent = NO

以上是关于无法设置模态视图控制器的导航栏颜色的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7:模态视图控制器状态栏颜色错误,但普通视图控制器正确

模态视图控制器即使在设置其框架 iphone 后也会与导航栏重叠

如何在保持导航栏存在的同时以模态方式呈现视图控制器。 (对于设置视图控制器)

模态 Segue 进入没有导航栏的导航控制器

如何更改模态视图 iOS 6 上的状态栏

关闭模态视图后的状态栏和导航栏问题