###iOS核心动画详解swift版----高级动画 接上篇文章,此次总结iOS核心动画的高级动画git
func rectangle(){ // 声明动画 let ani:CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "position") // 动画持续时间 ani.duration = 3.0 // 代理 ani.delegate = self // 设置不复原 ani.removedOnCompletion = false ani.fillMode = kCAFillModeForwards // 设置路径 let value1 = NSValue.init(CGPoint: CGPointMake(80, 380)) let value2 = NSValue.init(CGPoint: CGPointMake(300, 380)) let value3 = NSValue.init(CGPoint: CGPointMake(300, 600)) let value4 = NSValue.init(CGPoint: CGPointMake(80, 600)) let value5 = NSValue.init(CGPoint: CGPointMake(80, 380)) ani.values = [value1, value2,value3, value4, value5] // 开启动画 self.testView.layer.addAnimation(ani, forKey: nil) }
####2.圆形运动 代码以下:github
func circular(){ let ani:CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "position") ani.duration = 3.0 ani.delegate = self ani.removedOnCompletion = false ani.fillMode = kCAFillModeForwards let path:CGMutablePathRef = CGPathCreateMutable() CGPathAddEllipseInRect(path, nil, CGRectMake(30, 300, 300, 300)) ani.path = path self.testView.layer.addAnimation(ani, forKey: nil) }
####3.渐变更画 代码以下:spring
func gradual(){ let ani:CATransition = CATransition() // kCATransitionFade 渐变 // kCATransitionMoveIn 覆盖 // kCATransitionPush 推出 // kCATransitionReveal 揭开 //ani.type = kCATransitionPush ani.type = "rippleEffect" // kCATransitionFromRight 从右边 // kCATransitionFromLeft 从左边 // kCATransitionFromTop 从顶部 // kCATransitionFromBottom 从底部 ani.subtype = kCATransitionFromLeft ani.duration = 3.0 ani.delegate = self ani.fillMode = kCAFillModeForwards ani.removedOnCompletion = false self.testView.image = UIImage(named: "12") self.testView.layer.addAnimation(ani, forKey: nil) }
####4.转场动画 代码以下:swift
func transition(){ let ani:CATransition = CATransition() // rippleEffect // cube // pageCurl ani.type = "suckEffect" ani.subtype = kCATransitionFromLeft ani.duration = 2.0 ani.delegate = self ani.fillMode = kCAFillModeForwards ani.removedOnCompletion = false self.testView.image = UIImage(named: "12") self.testView.layer.addAnimation(ani, forKey: nil) }
####5.弹簧动画 代码以下:动画
func spring(){ let ani:CASpringAnimation = CASpringAnimation(keyPath: "bounds") // 弹簧质量,影响惯性 ani.mass = 10 // 刚度系数,数值越大,产生形变的力越大,运动越快 ani.stiffness = 5000 // 阻尼系数,越大中止越快 ani.damping = 100 // 初始速度 ani.initialVelocity = 5 ani.delegate = self ani.toValue = NSValue.init(CGRect: CGRectMake(0, 0, 400, 400)) ani.duration = ani.settlingDuration ani.removedOnCompletion = false ani.fillMode = kCAFillModeForwards self.testView.layer.addAnimation(ani, forKey: nil) }
####6.组合动画 代码以下:url
func groups(){ // 位置 let ani = CABasicAnimation(keyPath: "transform.rotation.z") ani.toValue = NSNumber.init(double: M_PI) // 弹簧 let sprAni:CASpringAnimation = CASpringAnimation(keyPath: "bounds") // 弹簧质量,影响惯性 sprAni.mass = 10 // 刚度系数,数值越大,产生形变的力越大,运动越快 sprAni.stiffness = 5000 // 阻尼系数,越大中止越快 sprAni.damping = 100 // 初始速度 sprAni.initialVelocity = 10 sprAni.duration = sprAni.settlingDuration sprAni.toValue = NSValue.init(CGRect: CGRectMake(0, 0, 400, 400)) // 组合动画 let group:CAAnimationGroup = CAAnimationGroup() group.animations = [ani, sprAni] group.duration = 0.5 group.removedOnCompletion = false group.fillMode = kCAFillModeForwards group.delegate = self self.testView.layer.addAnimation(group, forKey: nil) }