秒針を回転させる:iPhoneアプリでアナログ時計を作る

前回、最初のオリジナルなiPhoneアプリとして、アナログ時計を作ろうと決めました。そして、背景画像と秒針の画像をレイヤーで分けて設置するところまで作りました。今回は、

秒針を動かすことにチャレンジです。

ActionScriptなら、Dateオブジェクトで時刻を取得して、それをラジアンで角度へ計算して、秒針のムービークリップを回転させるという感じですぐに作れます。
しかし、ググりながらやってみたものの、CALayerで秒針をどうアニメーションさせれば良いのか分かりません。。。
なんとか辿り着いたコチラのページ(「フェンリル|デベロッパーズブログ」)を参考に、以下のコードで試したのが、、、

- (void)viewWillAppear:(BOOL)animated//
{
    self.view.layer.contents =(id)[UIImage imageNamed:@"oboeyo_clock_back.png"].CGImage;
    
    CALayer *baseLayer =[self.view layer];
    
    CALayer *layer_clock_plate =[CALayer layer];
    layer_clock_plate.bounds =CGRectMake(0, 0, 303, 303);
    layer_clock_plate.position =CGPointMake(160, 180);
    layer_clock_plate.contents =(id)[UIImage imageNamed:@"oboeyo_clock_plate.png"].CGImage;
    [baseLayer addSublayer:layer_clock_plate];
    
    CALayer *sec_hand =[CALayer layer];
    sec_hand.bounds =CGRectMake(0, 0, 10, 150);
    sec_hand.anchorPoint =CGPointMake(0.5, 0.87);
    sec_hand.position =CGPointMake(160, 180);
    sec_hand.contents =(id)[UIImage imageNamed:@"sec_hand.png"].CGImage;
    [baseLayer addSublayer:sec_hand];
    
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"];
    
    // 回転の開始と終わりの角度を設定 単位はラジアン
    anim.fromValue = [NSNumber numberWithDouble:0];
    anim.toValue = [NSNumber numberWithDouble:360 * M_PI/180];
    
    // 回転軸の設定
    anim.valueFunction = [CAValueFunction functionWithName:kCAValueFunctionRotateZ];
    
    //1回転あたりのアニメーション時間 単位は秒
    anim.duration = 60;
    
    // アニメーションのリピート回数
    anim.repeatCount = HUGE_VALF;
    
    // アニメーションをレイヤーにセット
    [sec_hand addAnimation:anim forKey:nil];
    
//    [super viewWillAppear:animated];
}



こちらの感じ。でも、これだと秒針は1分で1週するものの、時刻を正確に反映しているとは言い難い。。。
あと、イロイロと機能を増やした時に応用が利きません。

NSDateっていうクラスで日時を取得できるようなので、今度はそちらを試してみます

★★★自作iPhoneアプリをAppStoreでリリースするまでの道のり★★★