iOS核心动画详解swift版----高级动画

###iOS核心动画详解swift版----高级动画 接上篇文章,此次总结iOS核心动画的高级动画git

  • 在第二个ViewController实现高级动画 ####1.矩形运动 矩形运动 代码以下:
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)     
}
  • 到这里iOS的核心动画已经介绍完毕,附上github地址:iOS核心动画,喜欢的能够给星支持一下啦~~,基础动画能够参考个人上一篇博客:核心动画基础篇
相关文章
相关标签/搜索