スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]UIColorの比較

UIColor(CGColor)同士が同一の色かどうかを判別します。
そのためには、RGBAの値を取得し、比較する必要があります。

以下がそのコードとなります。
//UIColor+UIColorExtension.h
#import <UIKit/UIKit.h>

@interface UIColor (UIColorExtension)

- (BOOL)isEqualToColor:(UIColor *)color;

@end


//UIColor+UIColorExtension.m

#import "UIColor+UIColorExtension.h"

@implementation UIColor (UIColorExtension)

- (BOOL)isEqualToColor:(UIColor *)color {
//Target
const int numComponents = CGColorGetNumberOfComponents(color.CGColor);
const CGFloat *components = CGColorGetComponents(color.CGColor);
float red,blue,green,alpha = 0.0f;
if (numComponents == 4)
{
red = components[0];
green = components[1];
blue = components[2];
alpha = CGColorGetAlpha(color.CGColor);
}
else
{
red = components[0];
green = components[0];
blue = components[0];
alpha = components[1];
}

//Current
const int current_numComponents = CGColorGetNumberOfComponents(self.CGColor);
const CGFloat *current_components = CGColorGetComponents(self.CGColor);
float current_red,current_blue,current_green,current_alpha = 0.0f;
if (current_numComponents == 4)
{
current_red = current_components[0];
current_green = current_components[1];
current_blue = current_components[2];
current_alpha = CGColorGetAlpha(self.CGColor);
}
else
{
current_red = current_components[0];
current_green = current_components[0];
current_blue = current_components[0];
current_alpha = current_components[1];
}

//各色の数値を比較します
BOOL result = YES;
if(current_red != red)return NO;
if(current_green != green)return NO;
if(current_blue != blue)return NO;
if(current_alpha != alpha)return NO;

return result;
}

@end


利用時は以下のようにします。

//カテゴリクラスを必ずimportすることを忘れないでください
#import "UIColor+UIColorExtension.h"
if([color isEqualToColor:[UIColor whiteColor]])
{
NSLog("この色は白です");
}
else
{
NSLog("この色は白ではありません");
}
このエントリーをはてなブックマークに追加

tag : iOS UIColor CGColor 比較

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。