我使用动画块制作自定义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];
}
这很好用。 当我使用块时,为什么它不起作用?