2009-10-20 9 views
6

Objective-Cで書かれたコードを使用して、2つの色が同じかどうかを調べようとしています。Objective-Cの色を比較する

私は私のコンソールが

2009-10-20 00:27:10.814 colorGame[13588:207] currentColor is kCGColorSpaceModelRGB 0 0 1 1 
2009-10-20 00:27:10.815 colorGame[13588:207] Adjacent Color is kCGColorSpaceModelRGB 0 0 1 1 
2009-10-20 00:27:10.815 colorGame[13588:207] 0 

を示している場合、私はより多くのコードを投稿することができ

NSLog(@"currentColor is %@", currentColor); 
NSLog(@"Adjacent Color is %@",[[buttonArray objectAtIndex:1] backgroundColor]); 
NSLog(@"%i",[[buttonArray objectAtIndex:1] backgroundColor]==currentColor); 

(現在はデバッグ目的のために)2つの色が同等であるかどうかを判断するためのコードスニペットを使用しています尋ねられた(私はそれ以上が本当に必要かどうかわからない)。現在の色は、最初は

となりました。

私はちょうど私が間違って比較をしていると確信している、おそらく、私は気づいていない色を比較することができるいくつかの組み込みの方法です。

+0

「Objective-Cでオブジェクトを比較する」という言葉は、色とは関係がないことから、 – nschmidt

答えて

11

オブジェクトは、単に、おそらく決してtrueを返すことが起こっていないポインタアドレス

+1

私はあなたがisEqualを意味すると思います: – nall

+0

ありがとうございました!私はちょうど、コード自体を少し変更して、文字の出力を色と比較し、isEqualを使って比較しました。今は美しく動作します。ありがとう! – sshaukat

1

あなたが同等のオブジェクトのポインタをテストしているが、比較isEqual:方法、ない==を、使用して比較する必要があります。実際のカラー値で作業したい場合は、基礎となるCGColorリファレンスを取得する必要があります。コンポーネントはフロートとして保持され、それらがディスプレイハードウェアで解決できるほどの価値によって異なる場合がありますので、同じ月を見てか、2つの色が、TRUE復帰しない場合がありますことを心に留めておいてください

17
@implementation UIColor (compare) 

- (BOOL) isEqualToColor:(UIColor *) otherColor 
{ 
return CGColorEqualToColor(self.CGColor, otherColor.CGColor); 
} 

@end 

異なる色空間で定義されている場合、このメソッドはTRUEを返すことはありません。

+0

私は、2つのUIColorsが同じ値のコンポーネントを持ち、同じ色空間にあったが、[UIColor isEqual:]が働いていたときにCGColorEqualToColorが等しくなかった状況があった。 –

関連する問題