7

我正在向我的 iPhone UI 添加自定义按钮,并希望使它们具有 Apple 应用程序的玻璃外观。我有一个很好的默认玻璃图像,但我不想为我想要的每种色调(红色、绿色、蓝色等)都有一个单独的图像。

有没有办法加载灰度 PNG 并将其调整为我想要的颜色?更好的是,有没有一种方法可以让 Apple 看起来像玻璃一样,而无需加载自定义图像?

4

6 回答 6

7

有点晚了,但如果像我这样的人搜索这种信息:使用 aUISegmentedControl和单个按钮,将其设置为momentary,然后将其设置为tintColor. 这样,您无需准备与颜色一样多的 PNG,框架会为您处理所有渲染。

例子:

UISegmentedControl *cancelButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Cancel"]];
[cancelButton setSegmentedControlStyle:UISegmentedControlStyleBar];
[cancelButton setTintColor:[UIColor colorWithRed:0.8 green:0.3 blue:0.3 alpha:1.0]];
[cancelButton setMomentary:YES];
[cancelButton addTarget:self action:@selector(didTapCancel:) forControlEvents:UIControlEventValueChanged];
[self addSubview:cancelButton];
[cancelButton release];
于 2011-02-11T16:16:11.323 回答
6

在一直很出色的“Cocoa With Love”网站上有一个示例:在 CoreGraphic 中绘制光泽渐变

于 2008-10-29T10:52:43.533 回答
2

据我所知,没有一种单一的方式,但是您可以通过采用默认灰度图像并将其与纯色合成(即在其上绘制)来获得所需的效果。如果您查看 Core Graphics 文档,您会发现有十几种不同的合成方法(例如,Color Burn),它们的某些组合可能会产生您想要的效果。

于 2008-09-23T23:00:00.790 回答
1

我不了解 iPhone UI,但您可以使用单个 PNG 来制作颜色变体图形。

即这些页面上的两个徽标(左上角):

产品

商店

使用这个PNG

替代文字 http://47degrees.com/images/logos/47_degrees.png

我想您可能需要将背景颜色设置为玻璃色。

于 2008-09-23T15:17:26.957 回答
0

我最终创建了自己的自定义按钮,该按钮与联系人编辑视图中“删除联系人”按钮中使用的渲染非常匹配。

有兴趣的可以在github上找到

PFTintedButton

于 2010-11-08T00:49:34.827 回答
0

我已经这样做了,效果很好:

iOS:将 RGB 滤镜应用于灰度 PNG

但是,它是作弊,它是添加,所以对于(例如)每个像素的红色分量,R_dest = R_src + R_tint

如果您想要细粒度控制,例如,您可能希望通过平均 RGB 分量(具有适当的权重)来提取每个像素的灰度值,然后将该值乘以您的色调,因此生成的颜色将为灰度(Sr ,Sg,Sb) * {Tr,Tg,Tb}

这将需要创建一块内存,创建一个绘制到该块中的位图上下文,将您的图像绘制到该上下文中,复制整个内存块以进行保管,处理 - 从副本中获取数据并修改原始后备存储,然后从原始后备存储中提取图像并释放您分配的所有内容。

从 RGBA 像素字节数据重构 UIImage 的问题

这个库已经为你做了一切,它不是最有效的方法,但它可以完成工作。iirc 他在应该使用 calloc 时使用 malloc。

于 2011-09-05T04:14:21.403 回答