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

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

作成:2011-03-28 09:01
更新:2011-03-28 09:11

■表示フォントとUIFont

今回は、GUIコンポーネントの表示に関する属性について考えてみましょう。コンポーネントには、それぞれ固有の機能に関する属性もありますが、多くのところで利用される属性もあります。

ひとつの例として、「表示フォント」の属性について考えてみましょう。フォントは、GUIコンポーネントではUILabelUITextFieldの表示テキストの属性の他、グラフィック描画などでも利用されたりします。

このフォントに関する属性は、「font」「setFont:」というメソッドとして用意されています。このメソッド自体はそう難しいものではありませんね。問題は、これらで扱われる「フォントの値」です。これは、テキストや数字といったものではなく、「UIFont」というクラスのインスタンスなのです。

UIFontというのは、文字通り「テキストのフォントに関する情報を管理するためのクラス」です。このUIFontインスタンスを作成したり、ここから必要な情報を取得する孤男で、表示フォントに関する情報を取り出したり設定したりすることができます。UIFontから情報を取得したり、またUIFontインスタンスを作成したりするためのメソッド・プロパティとしては、以下のようなものが用意されています。

◯UIFontインスタンスを作成する
UIFont * 変数 = [UIFont fontWithName:《NSString*》 size:《CGFloat》];

◯フォント名のプロパティ
@property(nonatomic, readonly, retain) NSString *fontName
@property(nonatomic, readonly, retain) NSString *familyName

◯フォントサイズのプロパティ
@property(nonatomic, readonly) CGFloat pointSize

フォント名のプロパティは、フォント名とファミリー名があります。ファミリー名は、HelveticaやRomanといったフォント全体の名前です。フォント名は、フォントファミリーでの個々のフォントの名前で、例えばHelveticaのボールド体ならHelveticaBoldといったものになります。

では、このUIFontを利用した例を挙げておきましょう。下のサンプルは、UILabelUITextFieldUIButtonを配置したレイアウトで、UITextFieldにサイズの値を入力してボタンを押すと、UILabelのテキストのフォントサイズが変更される、というものです。

このように、コンポーネントの属性は、コンポーネント用クラスにプロパティとして用意されており、そのプロパティから値を取り出したり、変更したりすることでコンポーネントの状態を変えることができるようになっているのです。

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

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

●プログラム・リスト●

※MyIAppController.h

#import <UIKit/UIKit.h>

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

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

- (IBAction)button1Action:(id)sender;

@end


※MyIAppController.m

#import "MyIAppViewController.h"

@implementation MyIAppViewController

@dynamic label1;
@dynamic field1;
@dynamic button1;

- (IBAction)button1Action:(id)sender {
	NSString * str = [field1 text];
	CGFloat size = [str floatValue];
	UIFont * font = [label1 font];
	UIFont * newfont = [UIFont fontWithName:
			[font fontName] size:size];
	[label1 setFont:newfont];
}

……中略……

@end

※関連コンテンツ

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