UIColor不匹配RGB

4
我在Fireworks中有一张图片。我使用取色器选择颜色然后查看RGB值。我将这些值放入UIColor:colorWithRed:green:blue:alpha中,但它没有给我相同的输出结果。我使用的是介于1.0和0.0之间的值。
我试图获得深蓝色,但UIColor给我的却是非常浅的蓝色。
有什么想法吗?

你向类方法传递了什么值? - gerry3
请复制并粘贴UIColor实例化的代码(如果需要,请同时包括RGB值的实例化)。还要复制并粘贴将该UIColor分配给元素的代码行。我猜你的代码中存在类型转换错误。哦,还请复制并粘贴Fireworks显示的确切颜色值。 - Till
4个回答

10

听起来,你将从烟花中转换的数值到UIColor所需的数值的计算有误。

例如:

烟花RGB值 红:64 绿:87 蓝:188

将这三个数字每个都除以255

得到[UIColor colorWithRed:0.250980392156863 green:0.341176470588235 blue:0.462745098039216 alpha:1.0]


那基本上是可以的,我稍微调整了几次直到看起来符合我的要求,但阴影效果让它与我想要的有些不同。我尝试使用[UIColor colorWithRed:0 green:20/255 blue:109/255 alpha:1],但这给了我黑色。如果我像这样实时计算,它似乎总是会给我黑色。 - Chris
5
如果你想即时计算,那么需要使用小数进行计算,以便将它们计算为浮点数,因为该方法要求传递CGFloat值。在你所使用的例子中,20/255或109/255的结果是0,因为你正在对整数进行除法运算而不是浮点数。因此,只要将其改为20.0f/255.0f和109.0f/255.0f,就可以得到颜色,而不是黑色。 - scottbates22

7
将以下代码添加到头文件中(例如helpers.h):
#define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]

然后将此添加到YourApp_Prefix.pch文件中。
#import "helpers.h"

最后,无论何时您需要使用颜色,都可以使用以下方法:
UIColor* myColor = RGBCOLOR(64,87,188);

6
我认为你的意思是UIColor myColor = RGBCOLOR(64,87,188); - pojo

0
#define UIColorFromRGBWithAlpha(rgbValue,a) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:a]

定义kbackGroundColor为UIColorFromRGB(0x00A99D)

使用这个代码来得到最好的RGB十六进制颜色....干杯!


0

请确保在语句中包含小数点以检索浮点值。

UIColor *myColor = [UIColor colorWithRed:16.0/255 green:176.0/255 blue:230.0/255 alpha:1]; 

希望这有所帮助。

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