我想打一个弹性弹出动画(在iPhone谷歌地图应用程序,有点像弹出)弹性动画 - 它背后
有谁知道的数学公式是什么样子一个想法数学做一个弹性动画?我尝试过,但想不出公式或如何去做。
以下是我心目中的内容:(控件或某物)在达到合适尺寸时停止增长,但弹性变形然后停止,开始增长,更快,更快。
任何想法,建议,它不一定是特别的那种方式。非常感谢!
我想打一个弹性弹出动画(在iPhone谷歌地图应用程序,有点像弹出)弹性动画 - 它背后
有谁知道的数学公式是什么样子一个想法数学做一个弹性动画?我尝试过,但想不出公式或如何去做。
以下是我心目中的内容:(控件或某物)在达到合适尺寸时停止增长,但弹性变形然后停止,开始增长,更快,更快。
任何想法,建议,它不一定是特别的那种方式。非常感谢!
这是一个弹出式动画,你看到了,虽然我还没有完全复制它。我已经使用CAKeyframeAnimation来到这个最接近的是以下几点:
CAKeyframeAnimation *boundsOvershootAnimation = [CAKeyframeAnimation animationWithKeyPath:@"bounds.size"];
CGSize startingSize = CGSizeZero;
CGSize overshootSize = CGSizeMake(targetSize.width * (1.0f + POPINOVERSHOOTPERCENTAGE), targetSize.height * (1.0f + POPINOVERSHOOTPERCENTAGE));
CGSize undershootSize = CGSizeMake(targetSize.width * (1.0f - POPINOVERSHOOTPERCENTAGE), targetSize.height * (1.0f - POPINOVERSHOOTPERCENTAGE));
NSArray *boundsValues = [NSArray arrayWithObjects:[NSValue valueWithCGSize:startingSize],
[NSValue valueWithCGSize:overshootSize],
[NSValue valueWithCGSize:undershootSize],
[NSValue valueWithCGSize:targetSize], nil];
[boundsOvershootAnimation setValues:boundsValues];
NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.9f],
[NSNumber numberWithFloat:1.0f], nil];
[boundsOvershootAnimation setKeyTimes:times];
NSArray *timingFunctions = [NSArray arrayWithObjects:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
nil];
[boundsOvershootAnimation setTimingFunctions:timingFunctions];
boundsOvershootAnimation.fillMode = kCAFillModeForwards;
boundsOvershootAnimation.removedOnCompletion = NO;
[layer addAnimation:boundsOvershootAnimation forKey:@"boundsOvershoot"];
其中POPINOVERSHOOTPERCENTAGE
大约是0.1。
放大图层(可能是UIView的背景图层),超过一定的百分比,缩小一点,然后下降一点,然后结束最终大小。
它接近Google地图注释的作用,但不完全相同。我认为对时间进行一些微小的调整可能会做到。
使用Core Animation可以很容易地完成这个任务,并且不需要任何数学 - 呃,除了增加,减少或除法以调整位置大小外,没有其他任何东西。
您可以创建一个CAKeyFrameAnimation
,将尺寸从0(或其他)增加到比它应该大一些的尺寸,然后缩小到比它应该小的尺寸,然后最终缩放到其预期的尺寸。
这会给你放大,缩小和实际大小的影响。
在UIImageView上效果很好 - 谢谢。尝试在UIButton上,它似乎从右下角而不是中心增长。 – roocell 2012-11-02 00:41:26