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

Jan*_*Jan 26 xcode objective-c uibarbuttonitem

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

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

Pet*_*ter 56

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

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

  • 我特此向您通报,工具栏按钮的救世主圣彼得。 (2认同)

小智 19

斯威夫特3:

let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)
Run Code Online (Sandbox Code Playgroud)


niv*_*pta 9

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

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

在此处输入图片说明

  • 完美的!这是最简单的解决方案 (2认同)

Amr*_*dhu 8

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


jes*_*.tt 6

对于Swift 2.1+,它看起来像这样:

let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
Run Code Online (Sandbox Code Playgroud)

或者干脆

let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(.AlwaysOriginal)
Run Code Online (Sandbox Code Playgroud)


cho*_*fie 6

斯威夫特 4:

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