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



前回、iPhoneアプリのアナログ時計の秒針を作りました。とりあえず、回ることは回ったのですが、

1分間で1周回る動きをしているだけで、ちゃんと時間を反映していませんでした。


とりあえず、時間を取得するNSDateというクラスがあるということで、ググってみたらコチラのページ(「Sun Limited Mt.」)で紹介されていました。
ソースコードは、以下のようになりました。

まぁ、ここまではActionScriptとそれほど大差ないので、スンナリといきました。この後、ActionScriptなら、取得した秒数にラジアンをかけて角度を出し、秒針のムービークリップのrotateプロパティへ入力、enterframeで毎フレームに更新するだけです。
ところが、CALayerはどうやったら良いのかイマイチ分かりません。
とりあえず、「CALayer 秒針」でググったものの、少しソースコード古かったのか、そのままコピペしてもエラーが出てしまいました。


いろいろ試した結果、コチラのページ(「sonicbrain@wiki」)にあったCALayerの回転と、コチラのページ(「iPhoneアプリ開発グループ」)にあった1秒ずつタイマー処理を組み合わせて、以下のようなソースコードになりました。

ちょっと最初に、現在の秒まで針が回転してしまうという意図しない動きが入ってしまったものの、ちゃんと現在の時刻を反映した動きになりました!
嬉しいけど、ちょっと時間かかり過ぎですね。ActionScriptなら1時間もあれば出来そうな動きを、1週間近くかかってしまいました。orz

次は、時間と分を反映させて、まずは時計の形にしたいと思います。