0

、変数RGBからアルファ値を取得しようとしています。UIColor

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

私は-1.998975時々alpha価値があります。私が知っているalphaように、0 から 1 の間である必要があります。何かアドバイス?

4

2 に答える 2

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 に答える
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);

おっしゃる通り、アルファ値に問題があります。しかし、redColor、blueColor などで機能するようです。私が気づいた 1 つの薄い点は、黒色の 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 に答える