动画块中的Inflight动画

时间:2011-07-28 20:08:47

标签: iphone animation ios4 core-animation

我使用动画块制作自定义UIView:

- (void)animateProgress
{
    [UIView animateWithDuration:animationDuration
                              delay:0.0
                            options: UIViewAnimationCurveLinear | UIViewAnimationOptionBeginFromCurrentState
                         animations:^(void) {
                             midImageView.frame = CGRectMake(midImageView.frame.origin.x, midImageView.frame.origin.y, (elapsedTime / endTime) * (bodyImageView.frame.size.width / 10 - MID_IMAGE_OFFSET_X), midImageView.frame.size.height);
                          } 
}
正在从NSTimer对象重复调用

-animateProgress()

问题在于飞机动画的平滑过渡。我已经设置了UIViewAnimationOptionBeginFromCurrentState标志,但是当前动画没有平滑过渡到下一个 - 当前动画被允许完成然后下一个动画开始 - 而不是将两者平滑地组合在一起。

让我感到困惑的是,当我不使用Obj-C样式块时没有问题:

- (void)animateProgress
{
        [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:5.0];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];  
    midImageView.frame = CGRectMake(midImageView.frame.origin.x, midImageView.frame.origin.y, (elapsedTime / endTime) * (bodyImageView.frame.size.width / 10 - MID_IMAGE_OFFSET_X), midImageView.frame.size.height);
    [UIView commitAnimations];
}

这很好用。 当我使用块时,为什么它不起作用?

0 个答案:

没有答案