iPhone - UIView动画无法正确循环

时间:2010-04-28 08:08:44

标签: iphone animation uiview translation

嘿所有,这里有一点问题,无法弄清楚我做错了什么。我试图反复上下动画UIView。当我开始它时,它正确地下降然后备份然后立即射到动画的“最终”位置。代码如下:

UIImageView *guide = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
    guide.frame = CGRectMake(250, 80, 30, 30);

    [self.view addSubview:guide];

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:2];
    [UIView setAnimationRepeatAutoreverses:YES];
    [UIView setAnimationBeginsFromCurrentState:YES];

    guide.frame = CGRectMake(250, 300, 30, 30);

    [UIView setAnimationRepeatCount:10];
    [UIView commitAnimations];

提前致谢!

3 个答案:

答案 0 :(得分:3)

这是一个老问题,但是如果有人在看这个,你可以使用分数重复计数来结束所需的状态。如果你是从A到B的动画并使用自动反转,则每个重复将看起来像这样A - > B - >答:既然你想在最后一个动画上结束B而不是A,那么只需这样做就可以使最后一次重复只到中途(到B):

[UIView setAnimationRepeatCount:10.5];

就是这样!

答案 1 :(得分:0)

这是一个'功能',而不是一个错误。这真的很烦人,但看起来除非苹果公司另有说法,否则这就是UIView动画的预期效果。

请参阅此答案:setAnimationRepeatAutoreverses not behaved as I expected

答案 2 :(得分:0)

您可以将setAnimationDidStopSelector设置为自定义函数,并在自定义函数中设置更多动画(甚至 递归 )。请参阅我对另一个问题here的回答。

通常我会定义一个动画结构(AnimationPath in the example)来协调整个动画(例如,通过计数器)。