我需要在我创建的游戏中让我的角色跳跃(将origin.y
增加50
并反向)。最平滑的方式背靠背UIAnimations
到目前为止,我所遇到的这样的方式有两种:
方法1:
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionAutoreverse
animations:^{
CGRect frame = self.kevinImageView.frame;
frame.origin.y -= 50;
self.kevinImageView.frame = frame;
} completion:^(BOOL finished){
CGRect frame = self.kevinImageView.frame;
frame.origin.y = 135;
self.kevinImageView.frame = frame;
}];
问题:在每一个完整的跳跃动画(上下)的结束ImageView
跳起来然后回落(可能由于调用completion
块所需的微小量)。这是显而易见的,我宁愿不这样做。
方法2:
[UIView animateWithDuration:1.0
animations:^{
CGRect frame = self.kevinImageView.frame;
frame.origin.y -= 50;
self.kevinImageView.frame = frame;
} completion:^(BOOL finished){
[UIView animateWithDuration:1.0
animations:^{
CGRect frame = self.kevinImageView.frame;
frame.origin.y += 50;
self.kevinImageView.frame = frame;
}];
}];
问题:如果我点击的观点(我用的是UITapGuestureRecognizer
)和ImageView
是在完成动画(去背下来),该Image View
会弹回而不是完成其动画。再次不是一个重大问题,但我应该能够避免的事情。
有没有什么方法可以解决这两个问题,或者解决其中一种方法的方法?
>>在你的方法2中,你错过了完成块。你添加了吗? – Rashad
@Rashad在第二个动画? – carloabelli
在你的第二个动画中,你错过了完成块(在方法2中)。 – Rashad