2013-11-01 59 views
0

下面是我用来采取UIImageView并使其上下浮动的代码。创建动画以使UIImageView无限上下(几乎浮动)时,如何在动画结束时停止暂停?

[UIView animateKeyframesWithDuration:2.0 delay:0.0 options:UIViewKeyframeAnimationOptionRepeat animations:^{ 
     [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.25 animations:^{ 
      self.slider.transform = CGAffineTransformMakeTranslation(0, -5.0); 
     }]; 
     [UIView addKeyframeWithRelativeStartTime:0.25 relativeDuration:0.5 animations:^{ 
      self.slider.transform = CGAffineTransformMakeTranslation(0, 5.0); 
     }]; 
     [UIView addKeyframeWithRelativeStartTime:0.75 relativeDuration:0.25 animations:^{ 
      self.slider.transform = CGAffineTransformMakeTranslation(0, 0.0); 
     }]; 
    } completion:^(BOOL finished) { 

    }]; 

但是,在动画结束之后以及重新启动之前,这个延迟会出现。

如何让它变得流畅?

回答

1

我不确定你到底会产生什么样的效果,但我认为这会给你一些像你的代码一样没有延迟的东西。我通常通过动画约束来做到这一点,而不是使用变换。在这个例子中,我制作了一个IBOutlet(topCon)到视图顶部的约束:

-(IBAction)floatView:(id)sender { 
    static int i= 1; 
    static float duration = .25; 
    [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ 
     self.topCon.constant = self.topCon.constant - (5 * i); 
     [self.view layoutIfNeeded]; 
    } completion:^(BOOL finished) { 
     i = (i == 1 || i == 2)? -2 : 2; 
     duration = 0.5; 
     [self floatView:self]; 
    }]; 
} 
+0

这就是我所要做的。无限地上下浮动。 –