【问题标题】:iPhone UIColor getrgb strange alpha valueiPhone UIColor getrgb 奇怪的alpha值
【发布时间】:2013-04-30 01:49:19
【问题描述】:

我正在尝试从UIColor 变量中获取RGB,alpha 值。

  currentColor = [[UIColor alloc]init];
  currentColor = [UIColor blackColor];
  CGFloat red, green, blue, alpha;
  [currentColor getRed: &red green: &green blue: &blue alpha: &alpha];

我有时会得到-1.998975alpha 值。 据我所知,alpha 应该介于 0 和 1 之间。 我真的很想知道它来自哪里。 有什么建议吗?

【问题讨论】:

  • 当你得到一个奇怪的alpha 时,你能提供一个currentColor 的例子吗?请记住,调用 UIColor getRed:green:blue:alpha: 方法不适用于白色、黑色和灰色(取决于这些颜色的引用方式)。
  • rgb值获取正常,只有alpha值有问题。
  • 好的,但是您仍然需要提供一些示例。发布一些演示该问题的代码。
  • getRed:green:blue:alpha: 方法调用的返回值是多少?它返回YES还是NO?如果值为NO,则无法转换。
  • 就像我说的,你不能对UIColor blackColor 使用这个方法。该颜色使用的是 RGB 以外的其他颜色模型。阅读UIColor getRed:green:blue:alpha: 方法的文档。它明确指出它仅适用于 RGB 颜色模型中的颜色。

标签: ios objective-c alpha uicolor


【解决方案1】:

厌倦了相同的代码,但我得到了 0

UIColor * currentColor = [[UIColor alloc]init];
currentColor = [UIColor blackColor];
CGFloat red, green, blue, alpha;
[currentColor getRed: &red green: &green blue: &blue alpha: &alpha];

NSLog(@"%f",alpha);

输出

2013-04-30 10:16:44.509 TrialsError[38563:11303] 0.000000

【讨论】:

    【解决方案2】:

    所以我尝试了你的代码,

      UIColor *color = [UIColor blackColor];
    
      CGFloat red;
      CGFloat green;
      CGFloat blue;
      CGFloat alpha;
    
      BOOL converted = [color getRed:&red green:&green blue:&blue alpha:&alpha];
    
      NSLog(@"Converted: %@", converted?@"YES":@"NO");
    
      NSLog(@"Red: %f", red);
      NSLog(@"Green: %f", green);
      NSLog(@"Blue: %f", blue);
      NSLog(@"Alpha: %f", alpha);
    

    你是对的,alpha 值有问题。但它似乎适用于 redColor、blueColor 等......我注意到的一点是,在尝试获取黑色 rgba 组件时,转换后的 BOOL 的值为 NO。我不能告诉你为什么会这样。我想你只需要解决它。

    我还注意到,如果你用

    创建黑色
    [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
    

    您可以使用正确的值获得所有 4 个组件(rgb 和 a)。我想知道 blackColor 是如何创建颜色的,如果它是在另一个颜色空间中创建的,或者是什么使转换为 RGBA 变得不可能。

    【讨论】:

    • UIColor blackColor 使用灰度颜色模式(以及whiteColor 和各种灰色颜色。这就是为什么getRed:green:blue:alpha 返回NO。颜色不在RGB 颜色模型中. 这就是为什么当您长时间创建黑色时它会起作用的原因。
    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2015-09-04
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多