弹跳式动画.当您将它应用于同一财产时

iLe*_*ing 0 animation uitableview xamarin.ios uianimation ios

如果我想为UITableViewCell制作动画,那么它会从左到右弹跳几次,我该怎么做?我正在尝试:

var bounds = activeCell.Bounds;
var originalLocation = bounds.Location;
var loc = originalLocation;

UIView.Animate(0.2,()=>{
   loc.X = originalLocation.X + 20;
   activeCell.Bounds = new RectangleF (loc, bounds.Size);   
   loc.X = originalLocation.X - 20;
   activeCell.Bounds = new RectangleF (loc, bounds.Size);   
});
Run Code Online (Sandbox Code Playgroud)

它仅激活最后一个状态(即向左移动元素).我试图将它们放在分开的Animate块中 - 它没有帮助.试图使用不同UIAnimationOptions- 相同.

Mic*_* A. 12

这是一篇很好的文章,解释了如何让它反弹.

http://khanlou.com/2012/01/cakeyframeanimation-make-it-bounce/

此外,还有一个解释用于计算反弹路径的公式.就我个人而言,我已经采用计算的绝对值来模拟地面反弹.

- (void) displayNoCommentWithAnimation{
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position.y"];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
animation.duration = 2;

int steps = 120;
NSMutableArray *values = [NSMutableArray arrayWithCapacity:steps];
double value = 0;
float e = 2.71;
for (int t = 0; t < steps; t++) {
    value = 210 - abs(105 * pow(e, -0.025*t) * cos(0.12*t));
    [values addObject:[NSNumber numberWithFloat:value]];
}
animation.values = values;

animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.delegate = self;
[viewThatNeedToBounce.layer addAnimation:animation forKey:nil];
}


- (void) animationDidStop:(CAAnimation *)animation finished:(BOOL)flag {
CAKeyframeAnimation *keyframeAnimation = (CAKeyframeAnimation*)animation;
[viewThatNeedToBounce.layer setValue:[NSNumber numberWithInt:210] forKeyPath:keyframeAnimation.keyPath];
[viewThatNeedToBounce.layer removeAllAnimations];
}
Run Code Online (Sandbox Code Playgroud)