【发布时间】:2011-04-20 02:28:58
【问题描述】:
看一下我正在开发的 iPad 应用程序的以下屏幕截图:
左侧的“聊天气泡”图标来自著名的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 的错误?或两者?或者两者都不是(即“按设计”)?
编辑:对答案的回应
看起来第一个版本是 使用图像作为掩码,而不是 作为常规图像。
看起来像,但事实并非如此。如果我用朋友用 Photoshop 手工点亮的图像替换图像,并使用UIButton,则定位和着色是正确的。我只是想避开那个手动步骤。
请记住,将 UIResponder a 中的对象(例如 UIButton) UIBarButtonItem 给出了不可预测的 结果,我发现最好 避免它。
你有消息来源吗? (尤其是 Apple 链接?)从未听说过。
将图像重新设计为您自己的。 这是最好的也是唯一的方法 确保适当的尺寸、渐变和 所有工具栏图标的位置。
我不一定不同意。但是,这是我要消除的手动步骤。应该可以在不需要编辑的情况下获得我想要的行为。 (特别是因为我使用现有框架获得了所需行为的两半。只是不是同时)
最好的工具栏是 25x25 并且 50x50@2x。有时你可能需要去 低至 23。
这是苹果官方的东西吗?也许来自HIG?能否提供出处?
您可以尝试将 imageInsets 设置为 把它往下推。
这也是一个不必要的手动过程。最糟糕的是,这需要为每个图像手动调整,如果图像发生任何变化,则必须仔细检查。工作量太大了。我只想将其设置为图像,并让底层框架解决如何使图像居中。
【问题讨论】:
标签: image ipad button ios toolbar