Hatena::ブログ(Diary)

TECH LOG RSSフィード

2010-12-05

[]Apps Amuck Blog 1日目

Hello Worldを表示するiphoneアプリを作った後に、いったい何を作ろうかと悩んでいたところ、こんなものを発見

Apps Amuck Blog

http://appsamuck.com/blog/index.php/2008/11/01/full-list-of-31-days-of-iphone-sdk-apps/

1日1つ簡単なアプリを作ろうというもの。

1日目は、明日(深夜0時)までの残り時間を表示するアプリ。

f:id:coolblue:20101206033950g:image:right:w200

URLの内容に沿って進めてみるものの、よくわからなくなってしまう。結局最終的に同じようなものができればいいかなということで、途中違うやり方になってしまったが、なんとか完成。

■新規プロジェクト作成

OS > Application > View-based Applicationを選択し、「選択」ボタン

プロジェクト名:MinutesToMidnight

■InterfaceBuilder起動

"xxxViewController.xib"をダブルクリックし、Interface Builderを起動。

ウィンドウの背景を黒に変更

Attribute Inspector(デフォルトで右にあるウィンドウ)のAttributesタブのBackgroundをBlack Colorに設定。

■表示用ラベルの設定

Library(デフォルトで左にあるウィンドウ)からLabelをView(デフォルトで真ん中にあるウィンドウ)にドラッグ適当な大きさに変更。font sizeは40ぐらい。"Label"はLibraryウィンドウの下の検索フィールド入力すれば探せる。

LayoutのAlignmentを真ん中寄せにして、TextをRedに設定。

MinutesTomidnightViewController.h

Xcodeに戻って、LabelとTimerの宣言。Timerは一定間隔で特定メソッドを繰り返し呼び出すのに使用する。updateLabelはラベルに表示する時刻を計算するメソッド

@interface MinutesToMidnightViewController : UIViewController {
	IBOutlet UILabel *countdownLabel;
	NSTimer *timer;
}
-(void)updateLabel;
@end

■MinutesTomidnightViewController.m

updateLabelメソッド詳細。

-(void)updateLabel {
    NSDate *now = [NSDate date];
	NSCalendar *calendar = [NSCalendar currentCalendar];
	NSDateComponents *comps = 
	[calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit 
						  | NSSecondCalendarUnit) fromDate:now];
	
	NSInteger hour = 23 - [comps hour];
	NSInteger min = 59 - [comps minute];
	NSInteger sec = 59 - [comps second];
	countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hour, min,sec];
}

updateLabelメソッドを1秒ごとに呼び出す部分

- (void)viewDidLoad {
	timer = [NSTimer scheduledTimerWithTimeInterval: 1.0
		target: self
		selector: @selector(updateLabel)
		userInfo: nil
		repeats: YES];
    [super viewDidLoad];
}

■ラベルとcountdownLabelの関連付け

InterfaceBuilderでラベルを選択。Attribute InspectorのConnectionsタブでnew Referencing Outletsの右の○をMinutesToMidnightViewController.xibのFile's Ownerにドラッグし、countdownLabelを選択。

■実行すれば動くはず。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/coolblue/20101205/p1