如何改变旋钮的旋转角度? iOS版

时间:2013-08-15 13:17:49

标签: ios

我使用此自定义控件:https://github.com/nathanday/ndrotator。 如何改变旋钮的旋转值(或角度)?

谢谢你的回答。保持给定限制之间的角度值!看:我有

  self.fmRotator.minimumDomain = 0.5* M_PI;
  self.fmRotator.maximumDomain = 2* M_PI;

// if i set manually value instead of rotatorValue, for example:
fmRotator.angle = (0.5f*M_PI+M_PI*rotatorValue*1.5f); // it's work perfect;
//or 
rotatorValue = 5.0f/10.0f; 
fmRotator.angle = (0.5f*M_PI+M_PI*rotatorValue*1.5f); // work too.
//but
rotatorValue = mySlider.value; // UISlider, return from 0 to 1;
fmRotator.angle = (0.5f*M_PI+M_PI*rotatorValue*1.5f);
// rotatorValue is float between 0..1;
// doesn't work(

1 个答案:

答案 0 :(得分:1)

根据documentation angle,必须是minimumDomainmaximumDomain之间的值。唯一重要的是将angle值保持在给定限制之间。 在代码中如果myVariable小于5.0,则不会发生任何事情。假设您使用值范围为(0 .. 1.0,默认值)的UISlider,并且您希望在-90到+90度之间旋转(-PI到PI)

您可以这样设置:

myRotator.minimumDomain = -M_PI;
myRotator.maximumDomain = M_PI;

float newAngle = slider.value - 0.5; // translate value to -0.5 .. 0.5
myRotator.angle = newAngle * M_PI;

这是基本的数学。只需确定您需要的范围,并将滑块的值转换为目标域。或者,您可以设置滑块的最小值和最大值以匹配域。在这种情况下,您需要将以下行添加到设置中:

slider.minimumValue = myRotator.minimumDomain;
slider.maximumValue = myRotator.maximumDomain;

事件处理程序将如下所示:

myRotator.angle = slider.value;
[myRotator setNeedsDisplay];