【发布时间】:2010-12-08 05:20:27
【问题描述】:
我想创建一个与某些复古电话应用具有类似行为的拨号盘。它们有一个圆形拨号器,可让您用手指旋转它。任何想法是如何创建的或讨论它的各个方面的一些链接?
【问题讨论】:
标签: iphone cocoa-touch iphone-sdk-3.0 core-animation core-graphics
我想创建一个与某些复古电话应用具有类似行为的拨号盘。它们有一个圆形拨号器,可让您用手指旋转它。任何想法是如何创建的或讨论它的各个方面的一些链接?
【问题讨论】:
标签: iphone cocoa-touch iphone-sdk-3.0 core-animation core-graphics
创建带有数字的圆形拨号盘。将移动表盘部分创建为以数字表盘为中心的透明图像,以便您可以通过透明孔看到数字。在两者上应用一个小图像作为手指停止。当您触摸其中一个孔区域时,会跟踪手指的运动。当手指移动时,使用变换矩阵旋转透明表盘图像以跟随它。如果手指以错误的方式移动,或者当手指被抬起或移出旋转刻度盘时,刻度盘将“释放”,您可以使用合适的速度撤消旋转,以模拟弹簧加载的返回。
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:d];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform = CGAffineTransformMakeRotation(/* some angle */);
image.transform = transform;
[UIView commitAnimations];
检测实际拨打的号码可以通过多种方式完成,从在表盘上创建隐形按钮并从中获取事件,或者通过计算将旋转表盘返回原位所需的旋转角度。 我不认为实现它会很困难,困难的是艺术品。
【讨论】: