首页 文章

动画转换后的UIImageView?

提问于
浏览
0

我在这里通过了一个很棒的教程: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 回答

  • 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);
     }
    

相关问题