Iphone 我可以要一个有彩色图像的uibarbuttonite吗?
我有一个图像,我想显示在一个uibarbuttonite,但出于某种原因,它只显示它的轮廓,其余的都是白色的。如何让它实际显示图像Iphone 我可以要一个有彩色图像的uibarbuttonite吗?,iphone,objective-c,uibarbuttonitem,Iphone,Objective C,Uibarbuttonitem,我有一个图像,我想显示在一个uibarbuttonite,但出于某种原因,它只显示它的轮廓,其余的都是白色的。如何让它实际显示图像 谢谢 更新:有关iOS 7+中提供的更简单的解决方案,请参阅 以下是我如何使用UIBarbuttonite的图像: UIImage *image = [UIImage imageNamed:@"buttonImage.png"]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; bu
谢谢 更新:有关iOS 7+中提供的更简单的解决方案,请参阅
以下是我如何使用UIBarbuttonite的图像:
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];
…
没有。正如你在报纸上看到的那样 确定图标的外观后,请在创建图标时遵循以下准则: 使用PNG格式。 使用带有适当alpha的纯白色。 不要包含阴影。 使用抗锯齿。 如果决定添加斜角,请确保其为90°(为了帮助您完成此操作,请想象一个光源位于图标顶部)。 对于工具栏和导航栏图标,创建一个尺寸约为20 x 20像素的图标。 对于选项卡栏图标,创建一个尺寸约为30 x 30像素的图标 注意:为工具栏、导航栏和选项卡栏提供的图标用作遮罩,用于创建在应用程序中看到的图标。 无需创建全彩图标
还有其他iOS7+解决方案:
NSString *iconFilename = // ...
UIImage *image =
[[UIImage imageNamed:iconFilename]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *barButtonItem =
[[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(onBarButtonItemTapped:)];
Swift 5:
let iconFilename: String = // ...
let image = UIImage(named: iconFilename)?.withRenderingMode(.alwaysOriginal)
let barButtonItem = UIBarButtonItem(image: image,
style: .plain,
target: self,
action: #selector(onBarButtonItemTapped(_:)))
从UIImage.h中提取:
。。。导航栏、选项卡栏、工具栏和分段控件自动将其前景图像视为模板。。。可以使用UIImageRenderingModeAlwaysTemplate强制始终将图像渲染为模板,也可以使用UIImageRenderingModeAlwaysOriginal强制始终将图像渲染为原始图像
还有一种方法根本不涉及编码 首先,将要放置在Assets.xcsets文档栏上的图像 在资源浏览器上选择图像 在右侧垂直工具栏上打开该图像的属性检查器 在“渲染为”上选择“原始图像” 即使在情节串连板上,按钮仍将继续使用着色颜色绘制,但在模拟器上运行时,将显示原始图像 图像的默认呈现模式因UI控件的不同而异。但是,如果在属性检查器上设置此参数,则可以强制使用特定的渲染模式来表示图像
如果您需要在不同的控制器上用不同的渲染模式表示相同的图像,那么MANIAK_dobrii的响应更合适。在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
如果要在按钮上显示标题,可能需要将setImage行更改为setBackgroundImage。如果没有,那么上面的代码可以正常工作。不要忘了
按钮。showsTouchWhenHighlighted=YES
,这样当点击按钮时,按钮会像标准UIBarButtonim一样发光。知道如何使图像像工具栏一样变白吗?请使用@MANIAK_dobrii的答案。不需要自定义视图,到目前为止,这是更好的答案。请尝试增加UIButton的高度以匹配工具栏的高度,而不是图像的高度。这对我来说很有效。@Apfelsaft-如果iOS 7在2009年存在,当被问到这个问题时,可能会是:)我已经编辑了被接受的答案以链接到这个答案。谢谢,这是非常干净的现象。这太棒了!这应该是答案。非常感谢。也适用于UIButton和多色图像!非常感谢。