UIColor 显示不完全正确?

UIColor display not exactly correct?

我在viewDidLoad

中输入了这个
self.view.backgroundColor = [UIColor colorWithRed:231/255.0 green:77/255.0 blue:77/255.0 alpha:1.0];

并在 xib 中创建标签,设置颜色 e74d4d(转换为 rgb 为 231,77,77)

我想在网站上显示图像,但它告诉我我需要 10 个声望。

我调试代码,发现这个,

(lldb) po self.view.backgroundColor
UIDeviceRGBColorSpace 0.905882 0.301961 0.301961 1

(lldb) po self.label.textColor
UIDeviceRGBColorSpace 0.87161 0.208926 0.237916 1

当您为 UIColor 传递值时,始终使用浮点值。

self.view.backgroundColor = [UIColor colorWithRed:231.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0];

在转换为其他格式时也使用相同的浮点值。

编辑:来自评论。 划分231/255.0和231.0/255.0是一样的。是的,但我已经写过,对于两个值,始终传递浮点值意味着 in。

由于用户没有提供第二个对话,我认为函数使用 255 而不是 255.0 作为结果,它将是一个整数值。

用 RGBFromUIColor 宏一个一个地尝试下面的代码,它会显示不同的输出。

self.titleLabel.backgroundColor = [UIColor colorWithRed:231/255 green:77/255 blue:77/255 alpha:1.0];
self.titleLabel2.backgroundColor = [UIColor colorWithRed:231.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0];
self.titleLabel3.backgroundColor = RGBFromUIColor(231, 77, 77);
self.titleLabel4.backgroundColor = RGBFromUIColor(231.0, 77.0, 77.0)

现在假设 RGBFromUIColor 的宏如下所示

#define RGBFromUIColor(r, g, b) \[UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]

或者像这样

#define RGBFromUIColor(r, g, b) \[UIColor colorWithRed:(r)/255 green:(g)/255 blue:(b)/255 alpha:1]

最后一个 RGBFromUIColor 将不会有相同的值,以防它没有被浮点数分隔,即 255.0

您的问题是文本标签颜色与您的背景颜色不一样?

我怀疑您的问题是您将文本颜色设置为 e74d4d,这是一个 24 位值,没有透明度值(RGBA 和 ARGB 中的 A)。尝试将透明度设置为不透明(alpha 为 1)的 ffe74d4d 或 e74d4dff。更好的是,只需像设置背景颜色一样设置它,iOS 会自动将透明度设置为不透明。

这可能不是您遇到的问题,但我之前曾看到 OS X 拾色器由于显示器上的颜色校准而出现一些颜色问题。有时似乎 select 按显示值显示颜色分量,然后将它们转换为 sRGB,但实际上根本不需要转换。

我会尝试以下任一方法:

  1. 使用“RGB 滑块”颜色选择器面板。
  2. 在没有颜色配置文件的图像中绘制颜色,在 Preview.app 中打开图像并使用移液器工具 select 该颜色。