无法设置模态视图控制器的导航栏颜色
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]; @LarceraxrootViewController
是一个没有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 后也会与导航栏重叠