libro
www.tuyano.com
初心者のためのiphone/ipadプログラミング入門

コンポーネントの主な属性 (2/4)

作成:2011-03-28 09:03
更新:2011-03-28 09:12

■色とUIColor

コンポーネントで使われる属性としては、「色」も重要でしょう。表示されるテキストや背景などの色、更にはグラフィックなどでも多用されます。

色の値を扱うものとしては、「UIColor」というクラスが用意されています。このUIColorインスタンスとして色の値を取り出したり、設定することで、コンポーネントの表示色を操作することができます。例えば、UILabelの色は、いかのようなメソッドでやり取りすることができます。

◯テキストの色
[《UILabel》 setTextColor:《UIColor*》];
UIColor* 変数 = [《UILabel》 textColor];

◯背景の色
[《UILabel》 setBackgroundColor:《UIColor*》];
UIColor* 変数 = [《UILabel》 backgroundColor];

では、UIColorインスタンスはどのようにして用意すればいいのでしょうか。これには、いくつかのやり方があります。まず、UIColorクラスに用意されている値を利用するやり方。UIColorには、主な色のインスタンスを取得するためのクラスメソッドが用意されています。以下のようなものです。
+ blackColor
+ darkGrayColor
+ lightGrayColor
+ whiteColor
+ grayColor
+ redColor
+ greenColor
+ blueColor
+ cyanColor
+ yellowColor
+ magentaColor
+ orangeColor
+ purpleColor
+ brownColor
+ clearColor
これらを呼び出せば、基本的な色はすぐに作成できます。例えば、黒を示すUIColorが欲しければ、[UIColor blackColor]とすればいいわけです。実に簡単ですね。

もっと微妙な色合いは、いくつか方法がありますが、一番わかり易いのはRGB各輝度とアルファチャンネル(透過度)をそれぞれ指定して作成する方法でしょう。これは以下のようなメソッドを利用します。
UIColor* 変数 = [UIColor colorWithRed:赤 green:緑 blue:青 alpha:アルファ];
各引数の赤・緑・青・アルファには、0〜1のCGFloat値が指定されます。これでそれぞれの輝度を指定することで、その色を示すインスタンスが得られます。

下に、簡単な利用例をあげておきましょう。UILabelUIButtonがあるものとしてコードを作成してあります。ボタンをクリックすると、UILabelの背景とテキスト色がランダムに変わります。このサンプルでは、Interface BuilderでLabelを設定するとき、「Opaque」属性のチェックをONにしてください。これをOFFのままにしておくと、背景が透過した状態となり、背景色の表示がされません。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※MyIAppController.h

#import <UIKit/UIKit.h>

@interface MyIAppViewController : UIViewController {
	UILabel * label1;
	UIButton * button1;
}

@property (nonatomic, retain) IBOutlet UILabel * label1;
@property (nonatomic, retain) IBOutlet
		UIButton * button1;

- (IBAction)button1Action:(id)sender;

@end


※MyIAppController.m

@implementation MyIAppViewController

@dynamic label1;
@dynamic button1;

- (IBAction)button1Action:(id)sender {
	srand(time(NULL));
	UIColor* c = [UIColor colorWithRed:
				rand() % 100 / 100.0
			green:rand() % 100 / 100.0
			blue:rand() % 100 / 100.0 alpha:1.0];
	[label1 setTextColor:c];
	UIColor* c2 = [UIColor colorWithRed:
				rand() % 100 / 100.0
			green:rand() % 100 / 100.0
			blue:rand() % 100 / 100.0 alpha:1.0];
	[label1 setBackgroundColor:c2];
}

……中略……

@end

※関連コンテンツ

「初心者のためのiphone/ipadプログラミング入門」に戻る