我可以将导航栏设置为黑色或任何其他颜色,但是当我尝试白色时,它只会使其变为灰色。对于好奇,这是我正在使用的代码:
[[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]];
这里发生了什么?
答案 0 :(得分:3)
找到解决方案。只是设置半透明就行了。
[[UINavigationBar appearance] setTranslucent:NO];
当我停下来思考它时,它应该是显而易见的。
答案 1 :(得分:2)
如果要设置单个栏的颜色,请将以下内容放在.m文件中:
创建导航控制器:
UINavigationController *myNavigationController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
更改栏的颜色:
myNavigationController.navigationBar.backgroundColor = [UIColor blueColor];
答案 2 :(得分:0)
setBarTintColor
是一种色调,意味着它有色 - 这就是为什么你看到灰色而不是白色(如果没有覆盖白色)。如果要使用纯色填充导航栏,请尝试使用setBackGroundColor
:
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
如果您仍然想要使用alpha值进行某些控制,可以使用:
[[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithWhite:1.0 alpha:1.0]];
从iOS 7开始,导航栏,标签栏和工具栏 (以下称为“条形”)被配置为半透明的 默认。半透明条纹将barTintColor与灰色混合 将它与系统定义的alpha值相结合以产生最终结果 用于将条形图与内容合成的背景颜色 覆盖。
答案 3 :(得分:0)
我创建了新类CustomViewController.swift,如下所示:
import UIKit
class CustomViewController: UINavigationController {
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let nav = self.navigationBar
nav.barStyle = UIBarStyle.black
nav.barTintColor = UIColor.white
//nav.tintColor = UIColor.white
nav.backgroundColor = UIColor.white
nav.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}
}
除非我在另一个覆盖我的更改的类行中删除,否则它不起作用:
//nc.navigationBar.shadowImage = UIImage()
//nc.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "bar_background"), for: .default)
答案 4 :(得分:0)
对于iOS13,自定义导航栏的新方法是使用UINavigationBarAppearance。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.backgroundColor = .white
// or navBarAppearance.configureWithTransparentBackground()
navigationController?.navigationBar.standardAppearance = navBarAppearance
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithDefaultBackground()
navigationController?.navigationBar.standardAppearance = navBarAppearance
}
注意:
.scrollEdgeAppearance
滚动视图,并在顶部滚动.compactAppearance
的
iPhone横屏.standardAppearance