模拟时钟与UIImages手?

我想知道如何在iPhone SDK中制作模拟时钟。 但是,我希望时钟的手是自定义图像,而不是像本教程中所绘制的方块: http : //iphone-dev-tips.alterplay.com/2010/03/analog-clock-using-quartz-core html的

这个教程的问题是,钟手是用Quarzt Core绘制的。 只要手可以定制,我就可以。 用这种方法制作模拟时钟最简单的方法是什么?

用CALayers来做。 这样做更容易,性能更好。

CALayer *handLayer = [CALayer layer]; handLayer.contents = (id)[UIImage imageNamed:@"hand.png"].CGImage; handLayer.anchorPoint = CGPointMake(0.5,0.0)]; [myview.layer addSublayer:handLayer]; //ie: if handLayer represents the seconds hand then repeat this every second ;) handLayer.transform = CGAffineTransformMakeRotation (angle); //set the angle here 

更新:

我使用CALayers写了一个ClockView示例 ,也许你觉得它很有用。

这个使用raphael js http://jsfiddle.net/8srjq/

  function start(){ canvas = Raphael("clock",200, 200); var h_sign; for(i=0;i<24;i++){ var p = Math.round(40*Math.cos(15*i*Math.PI/180)); if(p==40 || p==-40 || p==0){ var start_x = 100+Math.round(35*Math.cos(15*i*Math.PI/180)); var start_y = 100+Math.round(35*Math.sin(15*i*Math.PI/180)); }else{ var start_x = 100+Math.round(39*Math.cos(15*i*Math.PI/180)); var start_y = 100+Math.round(39*Math.sin(15*i*Math.PI/180)); } var end_x = 100+Math.round(47*Math.cos(15*i*Math.PI/180)); var end_y = 100+Math.round(47*Math.sin(15*i*Math.PI/180)); h_sign = canvas.path("M"+start_x+" "+start_y+"L"+end_x+" "+end_y); h_sign.attr({stroke:"#888","stroke-width":1}) } h_hand = canvas.path("M100 100L100 70"); h_hand.attr({stroke: "#eee", "stroke-width": 3}); min_hand = canvas.path("M100 100L100 65"); min_hand.attr({stroke: "#eee", "stroke-width": 2}); sec_hand = canvas.path("M100 110L100 55"); sec_hand.attr({stroke: "#f00", "stroke-width": 1}); var pin = canvas.circle(100, 100, 2); pin.attr("fill", "#fff"); setInterval(function(){ var now = new Date(); var h = now.getHours(); var min = now.getMinutes(); var sec = now.getSeconds(); h_hand.rotate(30*h+(min/2.5), 100, 100); min_hand.rotate(6*min, 100, 100); sec_hand.rotate(6*sec, 100, 100); },1000); }​ </script> 

希望有用