【问题标题】:Color difference between drawRect and Interface Builder?drawRect和Interface Builder之间的颜色差异?
【发布时间】:2012-06-02 12:07:03
【问题描述】:

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

另一个视图以编程方式着色以实现特定形状。我使用:

//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];
}

结果:

为什么会存在这种差异??


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


EDIT2:

所以,我在这里自欺欺人..“接口生成器将 RGB 99,99,99 显示为 80,80,80。我敢打赌它会将数字抵消 19。” >.> ... 一个使用 Xcode 的绝望的人会想像这样疯狂的东西.. 结果:

完美!!,但是为什么????另一个 Xcode 错误?在过去的一个月里,我发现了其中的 10 个......

【问题讨论】:

  • 发布一个完整的 drawRect 因为那两条线连同UIGraphicsGetCurrentContext 没有在视图上绘制颜色。
  • 感谢您的测试。只需将CGContextEOFillPath(myContext); 替换为CGContextFillRect。更简单,只是为了测试。
  • 你试过[UIColor colorWithRed:99/255.0 green:99/255.0 blue:99/255.0 alpha:1.0]吗?
  • @Mazyod 无论如何都不适用于CGContextFillRect(myContext, self.frame);。请发布您正在使用的代码。
  • 注意:我有一些非常有趣的信息。让我在你们尝试其他方法之前发布它们。

标签: ios uiview core-graphics drawrect uicolor


【解决方案1】:

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

How do I enter RGB values into Interface Builder?

插图:

【讨论】:

  • 谢谢。我不会想到在 IB 中这样做
  • 我遇到了同样的问题,我用 Fireworks jejej 测试了颜色
  • 谢谢!也对我有用!
【解决方案2】:

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]

【讨论】:

  • 您所说的完全有道理,但事实并非如此。我上传的截图有两种不同的灰色,一种由drawRect + leadColor = RGB 99,99,99 绘制。 (即 colorWithWhite 与您提供的代码相同。不过,我测试了它,没有用)。但是,在 IB 中设置的颜色显示为 RGB 80,80,80。
  • 奇怪!如果您在文本编辑器中打开 .xib 并四处寻找颜色值,您会看到什么?
  • 2MC40NjI3NDUwOTggMC40NjI3NDUwOTggMC40NjI3NDUwOTgAA .. 对我来说毫无意义。
  • 尽管您对空白问题的看法是正确的,但这是色彩空间的问题。
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 2011-11-21
  • 2018-07-16
  • 2011-10-11
相关资源
最近更新 更多