如何以编程方式设置 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 和后退按钮

使用完成按钮以编程方式添加 UINavigationBar

如何以编程方式插入右键图像UINavigationbar swift 3

如何以编程方式将 UIBarButtonItem 添加到拖到视图上的 UINavigationBar

以编程方式在 UINavigationController 中设置 UINavigationBar 的自定义子类