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

6
请看下面这张来自我正在开发的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按钮,既具有正确的颜色/透明度(这样我就不必手动设置),又具有正确的垂直定位?
其中一个是我的代码或苹果的错误吗?还是两者都有问题?或者都没有问题(即“按设计”)?
编辑:回答的响应
看起来第一个版本使用图像作为掩码,而不是作为常规图像。
看起来是这样,但事实并非如此。如果我用一个由朋友用Photoshop亮化的图像替换图像,并使用UIButton,则定位和着色是正确的。我只是试图找到避免手动步骤的方法。
请记住,在UIBarButtonItem中放置UIResponder对象(例如UIButton)会产生不可预测的结果,我发现最好避免这样做。
你有来源吗?(特别是苹果链接?)从未听说过。
重新设计图像以成为您自己的形象。这是确保所有工具栏图标的大小、渐变和位置的最佳且唯一的方法。
我并不完全不同意。然而,这是我想要消除的手动步骤。应该有可能获得我想要的行为,而无需进行编辑。(特别是因为我使用现有框架获得所需行为的两个部分。只是不能同时获得)
工具栏的最佳尺寸为25x25和50x50@2x。有时您可能需要降至23。
这是来自苹果官方的吗?也许来自HIG?您能提供一个来源吗?
您可以尝试在其上设置imageInsets来将其向下推。
这也是一个不必要的手动过程。最糟糕的部分是需要为每个图像手动调整,并且如果图像以任何方式更改,则必须进行双重检查。太多的工作了。我想只需将其设置为图像,让底层框架解决如何居中图像的问题。
3个回答

1

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

第二个版本的填充看起来只是填充问题。因此,您可以更改图像的大小以具有额外内容,使UIImage对象与其他按钮的大小相同(我认为是24x24px),或者您可以使用{{link1:UIBarItem的imageInsets属性}}。


0

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

只需像中间的那个一样创建并设置如下:

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

我会稍后尝试仔细查看这个特定情况。我不确定为什么会出现这种情况。

==编辑==

看起来迈克尔可能有一个解决方案可以解释这个行为。


0
重新设计图像,使其成为你自己的。这是确保所有工具栏图标的适当大小、渐变和位置的最佳且唯一的方法。对于工具栏来说,最好的尺寸是25x25和50x50@2x。有时候你可能需要降到23。
另一件事是通过增加2个像素来改变顶部和底部图像插入点,以获得你想要的结果。如果只改变其中一个插入点,图像会被挤压。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接