4

[UIColor whiteColor] は [UIColor colorWithRed:1 green:1 blue:1 alpha:1] とまったく同じだと思っていましたが、そうではありません! 誰でもこれを説明できますか?

CGFloat red1, green1, blue1, alpha1;
UIColor * color1 = [UIColor whiteColor];
[color1 getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
NSLog(@"%f, %f, %f, %f", red1, green1, blue1, alpha1);

UIColor * color2 = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
[color2 getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
NSLog(@"%f, %f, %f, %f", red1, green1, blue1, alpha1);

出力:

0.000000, 0.000000, 0.000000, -1.998628
1.000000, 1.000000, 1.000000, 1.000000

これはかっこ悪い..とても不快

4

1 に答える 1

6

のドキュメントからUIColor getRed:green:blue:alpha:

色が互換性のある色空間にある場合、色はRGB形式に変換され、そのコンポーネントがアプリケーションに返されます。色が互換性のある色空間にない場合、パラメータは変更されません。

[UIColor whiteColor]で作成されたグレーの色合いはUIColor colorWithWhite:alpha:、RGB色空間とは異なる色空間からのものです。したがって、それらは互換性のある色空間にありません。UIColor getRed:green:blue:alpha:したがって、そのような色で使用することは不適切です。

4つのCGFloat値を初期化して、何が得られるかを確認してください。それらをすべてゼロに設定すると、ゼロのままになります。

于 2012-10-25T05:59:38.840 に答える