drawRect和Interface Builder之间的色差?

时间:2012-05-28 04:20:45

标签: ios uiview core-graphics drawrect uicolor

简单地说,我在界面构建器中有2个视图,其中一个使用界面构建器中的RGB滑块设置为颜色99,99,99。

enter image description here

另一个视图以编程方式着色以实现某种形状。我填写它:

//Obviously, this is in drawRect.
[[UIColor leadColor] set];
CGContextEOFillPath(myContext);

//And this is a category on UIColor
+ (UIColor *)leadColor {
    return [UIColor colorWithWhite:99/255.0 alpha:1.0];
}

结果:

enter image description here

为什么存在这种差异?


编辑:(已删除不必要的drawRect代码)


EDIT2:

所以,我在这里骗自己......“界面建设者将RGB 99,99,99显示为80,80,80。我打赌它将数字偏移19。” >> ......一个使用Xcode的绝望男人认为像这样疯狂的东西..结果:

Perfect!!

完美!! ,但为什么 ????另一个Xcode错误?我发现过去一个月里有10个......

2 个答案:

答案 0 :(得分:22)

我终于到了这个应用程序的微调阶段,不得不解决这个问题,所以,我搜索并轻松找到了解决方案:

How do I enter RGB values into Interface Builder?

<强>插图:

enter image description here

答案 1 :(得分:1)

colorWithWhite使用grayscale space,灰度空间中的颜色99不会映射到RGB空间中的颜色(99,99,99)。

因此,为了获得与Interface Builder相同的结果,您需要使用RGB空间。将您的调用替换为colorWithWhite:

[UIColor colorWithRed:99/255.0 green:99/255.0 blue:99/255.0 alpha:1.0]