我在这里通过了一个很棒的教程:http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit
我已经开始工作,开发人员在github上有他的代码链接:https://github.com/funkyboy/How-To-Create-a-Rotating-Wheel-Control-with-UIKit
现在我要做的是在选定项目旋转选定的插槽时为所选项目设置动画 . 我还将选定的插槽更改为底部,为了适应这种情况,我更改了方法中的代码
- (void) drawWheel
我改变了路线
im.transform = CGAffineTransformMakeRotation(angleSize * i);
至
im.transform = CGAffineTransformMakeRotation(angleSize * i - M_PI / 2);
占据现在是-pi / 2的位置
我要做的下一件事就是让选定的丁香大小缩小;这将在两个不同的场合发生;一次,当车轮加载时,以及当一个关闭通过所选位置时 . 在这里,我有点卡住了 .
我写了以下方法:
- (void)growImage:(UIImageView *)v {
[UIView animateWithDuration:1.0动画:^ completion:^(BOOL完成){[UIView animateWithDuration:1.0 animations:^]; }];
}
我首先在初始丁香首次设置的initWheel方法中调用它:
if (i == 0) {
im.alpha = maxAlphavalue;
[self growImage: cloveImage];
}
对于第二项,我编写了以下方法:
- (void)findViewandGrowImage:(int)tag {for(self.container.subviews中的id myArrayElement){UIImageView * v = myArrayElement; if(v.tag == tag){[self growImage:v];打破; }}}
我调用的 - (void)touchesEnded:(NSSet *)触及withEvent:(UIEvent *)event {
因此,在设置alpha值后:
lab.alpha = maxAlphavalue;
[self findViewandGrowImage : currentValue];
关于我做错了什么,对我来说有一个基本的脱节;第一种情况正常;第二种情况是丁香旋转到车轮上的不同扇区以及增长和缩小......我不知道为什么 . 我喜欢任何输入 .
谢谢 .
1 回答
如果你有一个变换:
然后你将它动画化为变形
它会在动画时从
(angleSize*i - M_PI/2)
回到角度0,因为你的第二个变换不包括这个旋转 .如果您希望它改变大小并保持其当前角度,您需要将旋转与刻度组合,然后在计算中使用它,如下所示: