BLOG

Blitz Gateスタッフブログ

BLOG

UIColorからNSUInteger(16進数)に変換する方法

書いた人:

iOS , iPhone , 技術  

eyecatch

どうも、ゆんゆんです。

 

最近暑くなりましたね。
事務所では裸足でお仕事してますが、それでも暑いです。
プールで仕事したいくらいです。

 


 

さて、今回は弊社アプリの鏡アプリを作成している際に、
UIColorからNSUIntegerに変換したいという内容がありましたので、
その方法をご紹介します。

 

実はNSUIntegerからUIColorへの変換は、調べれば結構出てくるんですが、
その逆が全然出てこないので考えてみました。

 

+(NSUInteger)hexFromColor:(UIColor *)color
{
	const size_t totalComponents = CGColorGetNumberOfComponents(color.CGColor);
	const CGFloat * components = CGColorGetComponents(color.CGColor);
	
	unsigned int r = (unsigned int)(255 * components[MIN(0, totalComponents-2)]);
	unsigned int g = (unsigned int)(255 * components[MIN(1, totalComponents-2)]);
	unsigned int b = (unsigned int)(255 * components[MIN(2, totalComponents-2)]);
	
	NSUInteger number = ((r & 0xFFFFFF) << 16) |
						((g & 0xFFFFFF) << 8) |
						((b & 0xFFFFFF) << 0);
	
	return number;
}

 

こんな感じでどうでしょう?
やってることは非常に単純、UIColor.CGColorからカラーデータを抽出して、演算しているだけです。

 

プログラムでの色操作は結構あるので、コレで少しでも楽になると良いのですが・・・。
次も何かプログラム的なものを書いてみようかと思ってます。

 

ではでは〜♪

  • このエントリーをはてなブックマークに追加