iPad工具栏图标:条形按钮图像不居中?

时间:2010-10-01 23:03:00

标签: image ipad button ios toolbar

从我正在处理的iPad应用程序中查看以下屏幕截图片段:

ipad toolbar button images

左侧的“聊天气泡”图标来自着名的Glyphish icon set。请注意它是如何具有正确的垂直位置(在中间),但比用于InfoDark按钮的灰度要暗得多。制作此图标的代码如下:

UIImage* image = [UIImage imageNamed:@"02-chat.png"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height);
UIButton* button = [[UIButton alloc] initWithFrame:frame];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];
[button setShowsTouchWhenHighlighted:YES];
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

使用不同的代码,使用相同的图像创建中间的“聊天气泡”图标。注意它是如何具有正确的着色/透明度,但具有不正确的垂直定位(太高)。:

UIImage* image = [UIImage imageNamed:@"02-chat.png"];
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:nil action:NULL];

如何获得具有正确着色/透明度的UIBarButtonItem按钮(因此我不必手动执行),以及正确的垂直定位?

在我的代码或Apple中,是否有一个或哪个是bug?或两者?或两者都没有(即它是“按设计”)?

修改:回复答案

  

看起来第一个版本是   使用图像作为掩码,而不是   作为一个常规的形象。

它看起来像,但事实并非如此。如果我用带有Photoshop的朋友手动照亮的图像替换图像,并使用UIButton,则定位和着色是正确的。我只是试图找到那个手动步骤。

  

请记住放UIResponder   一个内部的对象(例如UIButton)   UIBarButtonItem给出了不可预测的   结果,我发现它是最好的   避免它。

你有来源吗? (特别是Apple链接?)从未听说过。

  

将图像重新设计为您自己的图像。   这是最好也是唯一的方法   确保适当的尺寸,渐变和   所有工具栏图标的位置。

我不一定反对。但是,这是我想要消除的手动步骤。应该可以在不需要编辑的情况下获得我想要的行为。 (特别是因为我使用现有的框架得到了所需行为的两半。只是不同时)

  

最适合工具栏的是25x25和   50×50 @ 2倍。有时你可能需要去   低至23。

这是苹果官方的官方消息吗?也许来自HIG?你能提供资源吗?

  

您可以尝试设置imageInsets   它要推倒它。

这也是一个不必要的手动过程。最糟糕的是,需要对每个图像进行手动调整,如果图像以任何方式发生变化,则必须进行双重检查。方式太多了。我想将其设置为图像,让底层框架解决如何使图像居中的问题。

3 个答案:

答案 0 :(得分:1)

看起来第一个版本使用图像作为蒙版,而不是常规图像。请记住,将UIResponder对象(例如UIButton)放在UIBarButtonItem中会产生不可预测的结果,我发现最好避免它。

第二个版本的填充看起来只是一个填充问题。因此,您可以更改图像的大小以获得额外的内容,使UIImage对象与其他按钮的大小相同(我认为是24x24px?),或者您可以使用the imageInsets property of UIBarItem

答案 1 :(得分:0)

您可以尝试在其上设置imageInsets以将其向下推。

只需像中间一样创建它并设置如下:

chatBarButtonItem.imageInsets = UIEdgeInsetsMake(2.0f, 0.0f, -2.0f, 0.0f);

稍后我会尝试仔细研究这个具体案例。我不确定为什么会这样做。

== EDIT ==

看起来迈克尔可能会对这种行为有一个答案。

答案 2 :(得分:0)

将图像重新设计为您自己的图像。这是确保所有工具栏图标的正确尺寸,渐变和位置的最佳和唯一方法。最适合工具栏的是25x25和50x50 @ 2x。有时你可能需要低至23岁。

您可以做的另一件事是将顶部和底部图像插入更改2个像素以获得所需的结果。如果您只更改1个插图,则会压缩图像。