当我通过Interface Builder向UIBarButtonItem
添加图标时,图标显示为白色。当我以编程方式将相同的图标文件添加到另一个UIToolbar
时,图标显示为黑色。为什么呢?
UIImage *image = [UIImage imageNamed:@"icon.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];
rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:reloadButton] autorelease];
答案 0 :(得分:6)
Jongsma所说的一切都是对的,你应该使用initWithImage:style:message。
下一个问题不是您创建UIBarButtonItem
的方式,而是您分配它的位置。您可以使用UIBarButtonItemStylePlain创建它,它通常应该将图标的轮廓呈现为白色,但UIBavigationItem的RightBarButtonItem(就像左边一样)不允许使用UIBarButtonItemStylePlain。它隐式转换为UIBarButtonItemStyleBordered。在带边框的样式中,图标按“原样”呈现,黑色带有轻微的渐变。
我认为如果你想要一个有边框的barButton上的白色项目,你将不得不触摸图像本身。
答案 1 :(得分:6)
答案:如果您想要白色,请将图像颜色设为白色。
<强>详细信息:强>
UIBarButtonItems的行为略有不同,具体取决于您使用它们的方式。
添加到UIToolbar
:
initWithImage:style:target:action:
创建“白色图标”(忽略图像颜色,不透明像素用作创建白色图像的蒙版)。
适用于bordered
和plain
样式(但仅适用于UIToolbar)。
initWithCustomView:
显示正常的彩色图像。
添加到UINavigationItem
:
initWithImage:style:target:action:
创建彩色图片并将plain
转换为bordered
。
答案 2 :(得分:0)
在您的代码中,您将UIButton设置为UIBarButtonItem的子视图。 UIBarButtonItem已经是一个按钮,所以你不应该添加另一个按钮作为子视图。
试试这个:
UIImage *image = [UIImage imageNamed:@"icon.png"];
rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:image] autorelease];
答案 3 :(得分:0)
有同样的问题。我注意到使用了@ 2X图像......