我有一个4层的UIViewControler。
我已经让每只手在正确的时间开始移动(通过根据应用加载的时间在圆上定义角度)。
如何使用CABasicAnimation
存取方法正确定义运动的动作和持续时间(应无限制)?
例如,我将我的secondHandMotion(实例化的CABasicAnimation对象)设置为与当前时间对应的时钟帧上的某个角度:
CABasicAnimation *secondHandMotion = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
secondHandMotion.fromValue = [NSNumber numberWithFloat:sAlpha];
secondHandMotion.toValue = [NSNumber numberWithFloat:(2*M_PI)];
[secondHand addAnimation:secondHandMotion forKey:@"transform"];
其中sAlpha
是作为时间函数的角度。
我知道secondHandMotion.toValue
声明是错误的。我怎么告诉它继续移动,并以正确的间隔,1秒钟滴答?
谢谢!
答案 0 :(得分:5)
当我在我的一个应用程序中实现此功能时,我从本教程开始
Analog Clock using Quartz Core 断开链接
它会重新计算每一秒,这可能会给出与系统时钟相关的更准确的结果。
我实现旋转的方式是这样的(这是动画部分,你仍然需要你以前做过的角度计算)。
CGAffineTransform transform = CGAffineTransformIdentity;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
self.hourView.transform = CGAffineTransformRotate(transform, hourAngle);
self.minView.transform = CGAffineTransformRotate(transform, minutesAngle);
self.secondView.transform = CGAffineTransformRotate(transform, secondsAngle);
[UIView commitAnimations];
注意:我在iOS学习中很早就写了这个,所以它可能有点可怕。
答案 1 :(得分:1)
看看PSAnalogClockView。它以可重用的方式很好地解决了您的问题。