????? 視圖從原始位置移動(dòng)到指定位置童擎,一般而言,直接用frame重新設(shè)置它的位置苏章,但是這樣有一個(gè)不好的地方就是閑的太生硬了寂嘉,所以我們應(yīng)該考慮給它加點(diǎn)動(dòng)畫效果,這樣看起來(lái)會(huì)比較流暢枫绅。
??? 1. 彈簧效果:CASpringAnimation 類
???? 這個(gè)是在iOS 9 之后才出現(xiàn)的泉孩,項(xiàng)目適用對(duì)象如果是8以上版本可以選擇其它方式。
? 代碼如下:
?????? CASpringAnimation *spring = [CASpringAnimation animationWithKeyPath:@"position"];
? ???? spring.damping = 5;//阻尼系數(shù)并淋,值越大寓搬,停止越快
? ???? spring.stiffness = 100;
? ? ?? spring.mass = 1;
? ???? spring.initialVelocity = 0;
? ? ?? spring.fromValue = [NSValue valueWithCGPoint:fromValue];
? ???? spring.toValue = [NSValue valueWithCGPoint:toValue];
? ? ?? spring.duration = [spring settlingDuration];
注釋:fromValue(原始位置CGPoint),?toValue(指定位置CGPoint)
調(diào)用:[視圖名.layer addAnimation:spring forkey:spring.keyPath];
??? 2.縱向平移(y)
?? 這里使用的是CABasicAnimation類预伺,它是基礎(chǔ)動(dòng)畫類订咸。
代碼如下:
?????? CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
? ?? ? animation.fromValue = [NSValue valueWithCGPoint:fromValue];
? ? ?? animation.toValue = [NSValue valueWithCGPoint:toValue];
? ?? ? animation.duration = 0.5;//持續(xù)時(shí)間
? ???? animation.removedOnCompletion = NO;//運(yùn)行一次是否移除動(dòng)畫
? ? ?? animation.fillMode = kCAFillModeForwards;//動(dòng)畫結(jié)束后,layer會(huì)一直保持著動(dòng)畫最后的狀態(tài)?
注釋:fromValue和toValue同上
希望文章對(duì)你有小小的幫助曼尊。