1

我想创建一个与某些复古手机应用程序具有类似行为的拨号盘。这些有一个圆形拨号器,可以让你用手指旋转它。任何想法如何创建或一些讨论它的方面的链接?创建拨号的任何示例?

回答

2

创建带有数字的圆形拨号。创建您的移动拨号部分作为中心在数字拨盘上的透明图像,以便您可以通过透明孔看到数字。在两个手指上应用一个小图像。当您在其中一个洞区中触摸时,会跟踪手指的运动。随着手指移动旋转透明拨号图像以使用变换矩阵跟随它。如果手指移动错误,或者手指抬起或移动到旋转拨号盘外,拨盘就会“释放”,您可以使用合适的速度撤消旋转以模拟弹簧加载的返回。

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:d]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
CGAffineTransform transform = CGAffineTransformMakeRotation(/* some angle */); 
image.transform = transform; 
[UIView commitAnimations]; 

拨打检测可以做多种方式,从表盘上创造无形按钮,抓住从这些事件中或通过计算旋转的旋转拨盘返回家园所需的角度的实际数量。 我不认为实施这将是非常困难的,这是很难的艺术作品。

+0

非常感谢!你如何通过setAnimationDuration使它跟上用户的速度,而不是一定的速度:? – 4thSpace 2009-10-21 04:57:57

+0

您可以轻松获得触摸坐标。如果您考虑使用机械手机拨号盘,只要您足够努力,就可以以任意速度旋转它。因此,当触摸变化时,周期性地(定时器?每第n次触摸通知?)计算出先前采样点,新点和中心枢轴点之间的角度,并且执行相当快速的旋转(如上)以跟随手指。我希望能够以几乎任何速度沿顺时针方向移动它,但它总是以机械弹簧速度沿逆时针方向返回。 – 2009-10-21 05:26:38