0

我正在尝试从变量中获取RGBalpha 值。UIColor

  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 之间。我真的很想知道它来自哪里。有什么建议吗?

4

2 回答 2

0

所以我尝试了你的代码,

  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 变得不可能。

于 2013-04-30T04:55:37.497 回答
0

厌倦了相同的代码,但我得到了 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
于 2013-04-30T04:59:35.057 回答