0

我想在创建自定义控件的同时学习一些动画。我已经通过一个梦幻般的教程在这里了: http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit动画转换的UIImageView?

我找到了工作,并且开发者在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

我想要做的就是所选择的丁香种植和尺寸的缩小,接下来的事情的位置;这将发生在两个不同的场合;一次,当轮子加载时,以及当关闭通过选定位置时。在这里,我有点卡住了。

我已经写了下列方法:

  • (无效)growImage:(的UIImageView *)V {

    [UIView的animateWithDuration:1.0动画:^ { v.transform = CGAffineTransformMakeScale(1.3 ,1.3); } 完成:^(BOOL完成){UIView animateWithDuration:1.0动画:^ v.transform = CGAffineTransformMakeScale(1.0,1.0); }]; }];

    }

和我调用此首先在initWheel方法,其中所述初始丁香是第一组:

if (i == 0) { 
     im.alpha = maxAlphavalue; 
     [self growImage: cloveImage]; 
    } 

对于第二项,我写了下面方法:

  • (void)findViewandGrowImage:(int)tag {(self.container.subviews中的id myArrayElement){ } { UIImageView * v = myArrayElement; if(v。tag == tag){ [self growImage:v]; 休息; } } }

我在 调用 - (无效)touchesEnded:(NSSet中*)触摸withEvent:方法(的UIEvent *)事件{

因为如此,设定α值后:

lab.alpha = maxAlphavalue; 
[self findViewandGrowImage : currentValue]; 

对我而言,我在某个地方存在一个根本的脱节:我做错了什么;第一个案件工作正常;第二种情况使得丁香旋转到轮子上的不同部分以及成长和缩小......我不知道为什么。我很喜欢任何输入。

谢谢。

+0

我真的不明白你想看看你的第二个案例。 – HalR

回答

1

如果你有改变的:

m.transform = CGAffineTransformMakeRotation(angleSize*i - M_PI/2); 

,然后你把它动画到的

[UIView animateWithDuration:1.0 animations:^{ v.transform = CGAffineTransformMakeScale(1.3, 1.3); } 

转化为它的动画将旋转从(angleSize*i - M_PI/2)背回角为0,因为你的第二个转换不包括这个轮换。

如果你想让它改变大小,并维持其当前的角度,您将需要一个旋转带刻度在计算中,像这样结合起来,然后用这个:

[UIView animateWithDuration:1.0 animations:^{ 
    CGAffineTransform newTransform = CGAffineTransformMakeRotation(angle); 
    v.transform = CGAffineTransformScale(newTransform, 1.3, 1.3);v.transform = CGAffineTransformMakeScale(1.3, 1.3); 
} 
+0

谢谢你,这帮助我走上正轨。我必须删除完成块并使用角度调整进行变换。 – marina