嗨,这是我到目前为止的情况。我已经将UIImageView添加到Interface Builder并将其设置为针的.png图像(Needle.png),我还将它连接到Xcode中相应的IBOutlet。
在我的viewDidLoad:方法中我设置了锚点
- (void)viewDidLoad {
[super viewDidLoad];
[needle.layer setAnchorPoint:CGPointMake( 0.5, 1 )];
}
我还在Interface Builder中创建了一个按钮,并将其连接到Xcode中的IBAction,此按钮执行动画块,
- (IBAction)animate {
[UIView beginAnimations:@"rotate" context:nil];
[UIView setAnimationDuration:1.0];
self.needle.transform = CGAffineTransformMakeRotation(10 * M_PI / 180);
[UIView commitAnimations];
}
所以当我按下动画按钮时,我的针图像逆时针旋转10°,这就是一个开始。但我真正想做的是让针根据不断变化的值不断旋转到正确的角度。
例如,如果我有一个分贝值给出了房间中的当前分贝水平,我希望该针反映该值(即10°== 10dB),并且因为这个值不断变化我'我希望我的针顺时针或逆时针旋转。
有谁知道我怎么能这样做?如果有人可以发布一些源代码来帮助我,我也很感激。
答案 0 :(得分:3)
但是我真的想要做到这一点 让针不断旋转 本身以正确的角度为基础 不断变化的价值。
当“不断变化的值”发生变化时,更改旋转值。
这个价值变化的刺激是什么?放置代码以更改那里的旋转。
如果值是KVO - 您可以使用该机制在KVO更改时更改旋转。
此外 - 听起来您可能想要在动画块中进行更改,以使针的移动更加流畅。比如说,值只会每秒更改一次 - 在动画块中进行更改,使其在一秒钟内发生变化。它们的针头运动将不那么“生涩”。
预先警告,如果你正在做动画,请设置setAnimationBeginsFromCurrentState - 所以如果你在现有动画的中途改变值(并重新制作动画),它将“做正确的事情”。