如何以编程方式设置 UINavigationbar 的背景颜色?
Posted
技术标签:
【中文标题】如何以编程方式设置 UINavigationbar 的背景颜色?【英文标题】:How do you set the background color of a UINavigationbar programatically? 【发布时间】:2013-07-27 19:03:28 【问题描述】:我正在使用来自 cocoacontrols.com 的可可 ios 组件,它不使用情节提要。此类创建一个新的模态视图,并且模态视图顶部有一个 NavigationBar。我正在尝试更改导航栏的颜色。在我所有其他基于情节提要的视图中,我使用 STBaseViewController 的基类将导航栏设置为白色。
我已将此 cocoacontrol 类更改为 STBaseViewController 而不是 UIViewController,但它仍然没有将我的背景更改为白色。
@interface BZPasscodeFieldController : STBaseViewController
在 BZPasscodeFieldController 中,他们没有对导航栏进行任何引用,所以我不确定它是如何显示的(同样它没有情节提要的唯一 xib,也没有导航栏)?
无论如何,有人知道如何以编程方式将导航栏背景颜色设为白色吗?
此外,在我所有具有 UINavigationBar 的情节提要视图控制器中,我在标题所在的区域添加了一个 UIButton,以便我可以轻松更改字体/样式并使其可点击。我需要将这个相同的 UIButton 添加到以编程方式创建的 BZPasscodeFieldController 的 uinavigationBar 中。我该怎么做呢?
【问题讨论】:
【参考方案1】:设置导航栏背景颜色:
[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];
设置导航栏色调颜色:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
【讨论】:
【参考方案2】:关于导航栏标题位置按钮的问题。每个navigationBar 都有一个titleView
属性,您可以为其分配任何视图。例如看看这个方法,你可以在你的 BZPasscodeFieldController 中调用它:
- (void) setNavigationBarTitleButton
UIButton* centralButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 44)];
[centralButton setImage:navigationCentralButtonImage forState:UIControlStateNormal];
[centralButton setShowsTouchWhenHighlighted:TRUE];
[centralButton addTarget:self action:@selector(goHigher) forControlEvents:UIControlEventTouchDown];
self.navigationItem.titleView = centralButton;
对于您之前的问题,已经提供的答案都是正确的,请在正确的位置调用它们(例如在 AppDelegate 的应用程序中:didFinishLaunchingWithOptions: 应该使其正常工作,除非您的自定义视图控制器类中出现问题。
【讨论】:
您可以将您的 xib 转移到您的故事板中,对吗?然后只推断导航栏?【参考方案3】:[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
【讨论】:
【参考方案4】:[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
【讨论】:
不起作用。它仍然是灰色的。实际上,如果我“po self.navigationController”它说导航栏是零?那么如果它是 nil,它会如何显示一个导航栏呢? @jgervin 你把它放在哪里了 viewDidLoad。我认为它实际上是 UITableView 中的导航栏。以上是关于如何以编程方式设置 UINavigationbar 的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式在其上添加 UINavigationBar 和后退按钮
如何以编程方式插入右键图像UINavigationbar swift 3