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核心動畫,喜歡的能夠給星支持一下啦~~,基礎動畫能夠參考個人上一篇博客:核心動畫基礎篇
相關文章
相關標籤/搜索