どのように私は "getHue:飽和:明るさ:アルファ:"を使用しますか?

There's this method in UIColor in iOS 5:

- (BOOL)getHue:(CGFloat *)hue saturation:(CGFloat *)saturation brightness:(CGFloat *)brightness alpha:(CGFloat *)alpha

しかし、私はどのようにコードでそれを使用するつもりなのか分かりません。確かに私はUIColorのそれを取得するために探している場合は、これらのコンポーネントのそれぞれを述べる必要はありません?

2
サイトに投稿する際にこれを調べることをお勧めします。 stackoverflow.com/editing-help 毎回コードを作成します。
追加された 著者 BoltClock,

2 答え

CGFloat hue;
CGFloat saturation;
CGFloat brightness;
CGFloat alpha;

[aColor getHue:&hue 
    saturation:&saturation 
    brightness:&brightness 
         alpha:&alpha];    
//now the variables hold the values

edit
getHue:saturation:brightness:alpha: returns a bool, determining, if the UIColor could had been converted at all.

例:

BOOL b = [[UIColor colorWithRed:.23 green:.42 blue:.9 alpha:1.0] getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
NSLog(@"%f %f %f %f %d", hue, saturation, brightness, alpha, b);

有効なので 0.619403 0.744444 0.900000 1.000000 1 をログに記録します

while

BOOL b = [[UIColor colorWithPatternImage:[UIImage imageNamed:@"pattern.png"]] getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
NSLog(@"%f %f %f %f %d", hue, saturation, brightness, alpha, b);

0.000000 0.000000 -1.998918 0.000000 0 を記録します。最後の0はBoolなので、これは無効で、実際には brightnessの範囲は0.0から1.0です。ですが、ここではいくつかランダムなクラップを保持しています。

conclusion
The code should be something like

CGFloat hue;
CGFloat saturation;
CGFloat brightness;
CGFloat alpha;

if([aColor getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha]){
    //do what ever you want to do if values are valid
} else {
    //what needs to be done, if converting failed? 
    //Some default values? raising an exception? return?
}
16
追加された

これらの4つのパラメータは、単なる値ではなく、 CGFloat ポインタです。これは標準的なCの参照渡しです。次のスタックオーバーフローに関する質問も参照してください。

例として:

CGFloat hue, saturation, brightness, alpha;
[myColor getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
// hue, saturation, brightness, and alpha are now set
8
追加された