嘿所有,这里有一点问题,无法弄清楚我做错了什么。我试图反复上下动画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];
提前致谢!
答案 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)
来协调整个动画(例如,通过计数器)。