我可以使用彩色图像的UIBarButtonItem吗?

时间:2009-12-02 19:30:28

标签: iphone objective-c uibarbuttonitem

我有一个想要在UIBarButtonItem上显示的图像,但由于某种原因它只显示它的轮廓,其余的都是白色的。我怎么能让它实际显示图像?

谢谢!

5 个答案:

答案 0 :(得分:63)

更新:有关更简单的解决方案,请参阅MANIAK_dobrii's answer,适用于iOS 7 +。


以下是我如何使用UIBarButtonItem的图像:

UIImage *image = [UIImage imageNamed:@"buttonImage.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );    
[button setImage:image forState:UIControlStateNormal];
[button addTarget:myTarget action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];    
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
…

答案 1 :(得分:54)

还有其他iOS7 +解决方案:

NSString *iconFilename = // ...
UIImage *image = 
    [[UIImage imageNamed:iconFilename] 
        imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *barButtonItem = 
    [[UIBarButtonItem alloc] initWithImage:image
                                     style:UIBarButtonItemStylePlain 
                                    target:self 
                                    action:@selector(onBarButtonItemTapped:)];

从UIImage.h中提取:

  

...导航栏,标签栏,工具栏和分段控件会自动将其前景图像视为模板...您可以使用UIImageRenderingModeAlwaysTemplate强制您的图像始终呈现为模板或UIImageRenderingModeAlwaysOriginal以强制您的图像始终作为原件呈现。

答案 2 :(得分:35)

还有另一种方法根本不涉及编码。

首先,将要放在条形图上的图像放在Assets.xcassets文档上。

在资产浏览器上选择图像。

Select the image

在右侧垂直工具栏上打开该图像的“属性”检查器。

Attributes inspector

On" Render As"选择"原始图像"。

Original Image

即使在故事板上,按钮仍将使用色调颜色进行绘制,在模拟器上运行时,将显示原始图像。

Simulator

图像的默认渲染模式因UI控件而异。但是,如果在属性检查器上设置此参数,则可以强制始终使用特定的渲染模式表示图像。

如果您需要在不同的控制器上使用不同的渲染模式表示相同的图像,那么MANIAK_dobrii的响应更合适。

答案 3 :(得分:10)

在Swift 3中:

let iconname = // ...
let image = UIImage(named: iconname)?.withRenderingMode(.alwaysOriginal)
let barButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(self. onBarButtonItemTapped))
self.navigationItem.leftBarButtonItem = barButtonItem

答案 4 :(得分:7)

不。您可以在Human Interface Guidelines

中阅读
  

在确定了图标的外观后,请在创建图标时遵循以下准则:

     

使用PNG格式。   使用纯白色和适当的alpha。   不要包含阴影。   使用抗锯齿。   如果您决定添加斜角,请确保它是90°(为了帮助您这样做,想象一下位于图标顶部的光源)。   对于工具栏和导航栏图标,请创建一个大约20 x 20像素的图标。   对于标签栏图标,请创建一个大约30 x 30像素的图标。

     

注意:您为工具栏,导航栏和标签栏提供的图标将用作蒙版,以创建您在应用程序中看到的图标。   没有必要创建一个全彩图标。

相关问题