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