跳轉(zhuǎn)動畫
CA翻轉(zhuǎn)動畫
//動畫設(shè)置代碼
//CA動畫
CATransition * animation = [CATransition animation];
[animation setDuration:3];
/*
pageCurl 向上翻頁
pageUnCurl 向下翻頁
cube 立方體轉(zhuǎn)換
rippleEffect 水紋波動
suckEffect 收縮效果
oglFilp 上下翻轉(zhuǎn)效果
*/
[animation setType:@"cube"];
[animation setSubtype:kCATransitionFromRight];
[self.view.window.layer addAnimation:animation forKey:@"push"];
//界面推送代碼
[self presentViewController:loginVC animated:YES completion:nil];
執(zhí)行動畫
動畫1
[UIView animateWithDuration:0.5 animations:^{
//動作執(zhí)行0.5s
self.frame=CGRectMake(0, HEIGHT_FOR_SCREEN, WIDTH_FOR_SCREEN, 260);
} completion:^(BOOL finished) {
//執(zhí)行完畢后執(zhí)行該步內(nèi)容
[self removeFromSuperview];
}];
CA彈簧動畫
//縱向平滑移動
CASpringAnimation * spring = [CASpringAnimation animationWithKeyPath:@"position.y"];
spring.damping = 5;//阻尼系數(shù)0~10
spring.stiffness = 100;//彈簧剛度系數(shù) 0 到 100 系數(shù)越大力就越大
spring.mass = 1;//彈簧末端的質(zhì)量 大于0質(zhì)量越大彈性就越大
spring.initialVelocity = 0;//速度
spring.fromValue = @(self.annotationView.layer.position.y);//起始的位置
spring.toValue = @(self.annotationView.layer.position.y + 10);//結(jié)束位置
spring.duration = spring.settlingDuration;//結(jié)束時間
[self.annotationView.layer addAnimation:spring forKey:spring.keyPath];
//self.annotationView這里是地圖上的標(biāo)注,具體根據(jù)要求更改
//position.y + 10為滑動的縱坐標(biāo)終點。同理,橫向移動為position.x。
mass:
質(zhì)量,影響圖層運動時的彈簧慣性,質(zhì)量越大,彈簧拉伸和壓縮的幅度越大。如果把質(zhì)量改成10,則動畫的速度變慢,并且波動幅度變大。stiffness:
剛度系數(shù)(勁度系數(shù)/彈性系數(shù)),剛度系數(shù)越大,形變產(chǎn)生的力就越大,運動越快damping:
阻尼系數(shù),阻止彈簧伸縮的系數(shù),阻尼系數(shù)越大,停止越快initialVelocity:
初始速率,動畫視圖的初始速度大小
速率為正數(shù)時,速度方向與運動方向一致,速率為負數(shù)時,速度方向與運動方向相反
如果把速率改成-20,則會看到 label 先往左邊移動一小段距離,然后再開始往右移動,因為初始速度往左,所以會經(jīng)歷先減速,后加速的過程settlingDuration:
結(jié)算時間 返回彈簧動畫到停止時的估算時間,根據(jù)當(dāng)前的動畫參數(shù)估算
通常彈簧動畫的時間使用結(jié)算時間比較準確
其他動畫
參考文章:CASpringAnimation 和 UIView.animateWithDuration 分別實現(xiàn)彈性動畫、iOS9 CASpringAnimation 彈簧動畫詳解