UIBarButtonItem图像保持蓝色而不是图像的原始颜色?

时间:2014-11-10 23:02:21

标签: objective-c xcode uibarbuttonitem

图标info.png如何保持蓝色并且没有附带该图像的原始颜色?我使用以下代码:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"info.png"]
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(info:)];

8 个答案:

答案 0 :(得分:51)

默认情况下,使用模板模式呈现UINavigationBar的条形按钮项目中的图像。您可以将其设置为原始。

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
                                                                         style:UIBarButtonItemStylePlain
                                                                        target:self
                                                                        action:@selector(info:)];

答案 1 :(得分:16)

斯威夫特3:

    let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)

答案 2 :(得分:7)

你也可以从资产中获取它。转到Assets.xcassets>>选择正用作条形图项目图像的图像。点击右侧面板中的属性检查器。选择渲染为原始图像。它将是更早的默认值。您现在将看到彩色图像。

答案 3 :(得分:4)

斯威夫特4:

let image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal)
navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(leftBarButtonPressed))

答案 4 :(得分:3)

我知道现在回答这个问题为时已晚,但是我看到有一种非常简单的方法可以解决此问题,而不是对代码进行一些更改

使用Xcode 转到资产-选择图像---选中“渲染为”,然后选择“原始图像”而不是默认属性。

enter image description here

答案 5 :(得分:2)

因为应用程序中barButtonItems的颜色与应用程序窗口中的tintColor属性相关。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.tintColor = [UIColor redColor];
    return YES;
}

答案 6 :(得分:2)

好的,明白了......我首先将图像设置为原始状态。

UIImage *image = [[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(info:)];

答案 7 :(得分:0)

从故事板中更改条形按钮项目色调颜色。或者从故事板中的图像中着色。

颜色应该是您想要的颜色,如hex或rgb。