【问题标题】:how to change the uinavigationbar background color without overriding drawRect:如何在不覆盖 drawRect 的情况下更改 uinavigationbar 背景颜色:
【发布时间】:2011-08-01 18:52:33
【问题描述】:

我正在尝试找到一种方法来为我的应用程序中的不同导航栏设置不同的背景颜色(我有几个视图,每个视图都有一个导航栏)。我不打算覆盖 drawRect: 因为这适用于整个应用程序。此外,使用 tintcolor 属性也无济于事,因为它仅适用于导航栏项目。

self.navigationController.navigationBar.tintColor = [UIColor greenColor];

我已经在谷歌上搜索了好几天,找不到解决这个问题的直接方法。这么简单的事情怎么这么难?不明白为什么它不是 uinavbar 的属性...

请有人帮忙提供一个简单的解决方案...谢谢!

【问题讨论】:

    标签: iphone objective-c xcode uinavigationcontroller uinavigationbar


    【解决方案1】:
    #import <QuartzCore/QuartzCore.h>
    
    self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"navigationBarBackgroundImage"].CGImage;
    
    self.navigationController.navigationBar.tintColor = [UIColor orangeColor];
    

    正如您在没有内容属性之前抱怨的那样。你需要导入quartzframework

    【讨论】:

    • 但我不想使用图像...如何在没有图像的情况下设置背景颜色并为项目设置不同的颜色?
    • 说实话,你在看代码之前有没有试过我的代码。这是设置导航栏色调颜色的方法。首先尝试此代码并检查您获得的是 orangeColor 还是 greenColor ?
    • 还有 self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"navigationBarBackgroundImage"].CGImage;不编译 - 看起来像一个转换错误。
    • 我只为该项目获得橙色
    • 再一次,(id) 转换没有编译。收到错误:文件...Login.m:错误:自动引用计数问题:将 C 指针类型“CGImageRef”(又名“struct CGImage *”)转换为 Objective-C 指针类型“id”需要桥接转换跨度>
    【解决方案2】:

    子类UINavigationBar 并覆盖drawRect,然后只在需要不同颜色的地方使用子类。 (如果你想要很多不同的颜色,你可以有一个方法让你在初始化子类或其他东西时传递颜色)。

    【讨论】:

    【解决方案3】:

    当你说 self.navBar setTintColor:[UIColor greenColor]]; 会发生什么在每个视图的 viewDidLoad 中。其中 navBar 被声明为 IBOutlet UINavigationBar 链接到界面构建器中的导航栏

    【讨论】:

    • 不希望更改图像 - 而是更改颜色。我如何将其应用于颜色?
    • 首先,我没有使用IB。其次,当我写它时,它只会改变导航栏项目的颜色。通常 TintColor 仅用于修改导航栏项目的颜色。如上所述,这正是我的问题。
    【解决方案4】:
    self.navigationController.navigationBar.backgroundColor = [UIColor greenColor];
    self.navigationController.navigationBar.tintColor = [UIColor greenColor];
    

    为我工作,非常简单的方法。

    【讨论】:

      【解决方案5】:

      您的代码是正确的。你需要把它放在你创建导航控制器的地方。

      【讨论】:

        猜你喜欢
        • 2022-10-13
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 2014-09-22
        • 2015-02-26
        • 1970-01-01
        • 2016-12-26
        相关资源
        最近更新 更多