タイマー割り込みで時刻表示する、ただそれだけの仕掛けです。後ろのたこルカなんて貼り付け固定ですし。
さて、ぼちぼちいってみましょうか。
まず、ストーリーボードに以下の2つを貼り付けて@interfaceにつなぎ、名前をつけます。
UITextField | testfield1 |
UIImage | image1 |
@interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *image1; @property (weak, nonatomic) IBOutlet UITextField *clockfield1;
image1はプログラム中じゃ使わないんですけど、あとで遊ぶためには名前つけといたほうがいいです。なお、画像はプログラムでなく別のとこで指定します。
タイマーと時刻、それからフォーマットを定義する場所を用意。本当はもっとスマートにやれるはずですが、あえてプロパティで実装しています。細かいパラメータは適当な教本をどうぞ。
@interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *image1; @property (weak, nonatomic) IBOutlet UITextField *clockfield1; @property NSTimer *tm; @property NSDate *now; @property NSDateFormatter *nowf; @property NSDateFormatter *nowsec; @property (nonatomic,copy) NSString *xsec;
まず、タイマー生成部。
_tm = [NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(night:) userInfo:nil repeats:YES ];
まだ肝心のnight本体がありませんね。以下に。
0.2秒ごとに呼ばれますが、 秒の位の変化がない場合は何もしません。
-(void)night:(NSTimer*)timer{ _now = [NSDate date]; NSString *dm = [_nowsec stringFromDate:_now]; if(![dm isEqualToString:_xsec]){ // 更新 _xsec = dm; dm = [_nowf stringFromDate:_now]; _clockfield1.text = dm; } }
実装部の全リストは以下の通り。
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *image1; @property (weak, nonatomic) IBOutlet UITextField *clockfield1; @property NSTimer *tm; @property NSDate *now; @property NSDateFormatter *nowf; @property NSDateFormatter *nowsec; @property (nonatomic,copy) NSString *xsec; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _xsec = @"99"; // 初回は必ず生成されるように。 _nowf = [[NSDateFormatter alloc] init]; _nowsec = [[NSDateFormatter alloc] init]; [_nowf setDateFormat:@"HH:mm:ss"]; [_nowsec setDateFormat:@"ss"]; // タイマーの生成例 _tm = [NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(night:) userInfo:nil repeats:YES ]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void)night:(NSTimer*)timer{ _now = [NSDate date]; NSString *dm = [_nowsec stringFromDate:_now]; if(![dm isEqualToString:_xsec]){ // 更新 _xsec = dm; dm = [_nowf stringFromDate:_now]; _clockfield1.text = dm; NSLog(@"%@",_xsec); }else{ // NSLog(@"ほむ?"); } } @end