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

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

作成:2011-03-28 09:10
更新:2011-03-28 09:15

■テキストの影(シャドウ)について

先にテキストの色について説明しましたが、テキスト色について考えるとき、意外と見落としがちなのが「」でしょう。

iOSのコンポーネントでは、「影」の属性が用意されています。例えばUILabelならば、表示されるテキストに影をつけることができるようになっているのです。この影は、色や影の位置(どれぐらい本体からずれて表示されるか)などまで細かに設定することができます。UILabelに用意されてる影に関するメソッドには、以下のようなものがあるのです。

◯影の色に関するもの
NSColor* 変数 = [《UILabel》 shadowColor];
[《UILabel》 setShadowColor:《NSColor*》];

◯影の位置(ずれ幅)に関するもの
CGSize 変数 = [《UILabel》 shadowOffset];
[《UILabel》 setShadowOffset:《CGSize》];

見ればわかるように、影はUIColorによる色と、CGSizeによる大きさ(ずれ幅)に関するものが用意されています。今まで説明してきた「色」と「位置・大きさ」の両方の知識が必要になる、意外と複雑な属性だったのです。

では、実際に影を操作するサンプルをあげておきましょう。ここでは、UILabelUIButtonを配置した形のサンプルをあげておきます。ボタンをタッチすると、NSTimerを使ってUILabelの影がゆっくりと左から右へと動いていきます。

※NSTimerについては、「初心者のためのObjective-Cプログラミング入門」の以下の記事を参考にしてください。
http://libro99.appspot.com/index3?id=579001&label=objective-c

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

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

●プログラム・リスト●

※MyIAppViewController.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


※MyIAppViewController.m

#import "MyIAppViewController.h"

@implementation MyIAppViewController

@dynamic label1;
@dynamic button1;

- (IBAction)button1Action:(id)sender {
	[label1 setShadowColor:[UIColor redColor]];
	[self startTimer];
}

- (void)startTimer {
	NSMethodSignature* signature = 
			[self methodSignatureForSelector:
					@selector(doTimer)];
    NSInvocation* invocation = [NSInvocation 
			invocationWithMethodSignature:signature];
    [invocation setTarget:self];
    [invocation setSelector:@selector(doTimer)];
	
	id t = [NSTimer scheduledTimerWithTimeInterval:0.1
			invocation:invocation repeats:YES];
}

- (void)doTimer {
	NSLog(@"doTimer");
	CGSize s = [label1 shadowOffset];
	CGFloat w = s.width;
	w = w > 30 ? -30 : w + 1;
	[label1 setShadowOffset:CGSizeMake(w, 10)];
}

……中略……

@end

※関連コンテンツ

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