美文网首页swiftiOS进阶
【iOS】缓动(easing)动画简介

【iOS】缓动(easing)动画简介

作者: 刘大帅 | 来源:发表于2015-11-09 11:10 被阅读1023次

学习文章

介绍

SwiftEasingAnimation.gif
关于In、Out、Inout的说明:
  • ease in : 加速度缓动
  • ease out: 减速度缓动
  • ease InOut:先加速度至50%,再减速度完成动画
方法介绍
  • Quad:二次方缓动
  • Cubic:三次方缓动
  • Quart:四次方缓动
  • Quint:五次方缓动
  • Sine:正弦曲线缓动
  • Expo:指数曲线缓动
  • Circ:圆形曲线的缓动
  • Elastic:指数衰减的正弦曲线缓动
  • Back:超过范围的三次方缓动
  • Bounce:指数衰减的反弹缓动
easing

源码

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let timer: NSTimer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "keyFrameAnimation", userInfo: nil, repeats: true)
        
        timer.fire()

    }
    
    func keyFrameAnimation() {
    
        frameValueAnimation()
        pointValueAnimation()
        sizeValueAnimation()
    }
    
    /**
     关键帧动画例子
     */
    func frameValueAnimation() {
    
        // 创建easing
        let easingValue = EasingValue(withFunction: .ElasticEaseInOut, frameCount: 120)
        
        // 创建关键帧动画
        let keyFrameAnimation = CAKeyframeAnimation(keyPath: "transform.rotation.z")
        keyFrameAnimation.values = easingValue.frameValueWith(fromValue: 0, toValue: M_PI)
        keyFrameAnimation.duration = 4
        
        // 创建layer + 执行动画
        let layer = CALayer()
        layer.frame = CGRect(x: 60, y: 60, width: 100, height: 100)
        layer.borderWidth = 1
//        layer.transform = CATransform3DMakeRotation(CGFloat(M_PI), 0, 0, 1)
        layer.addAnimation(keyFrameAnimation, forKey: nil)
        view.layer.addSublayer(layer)
    }
    
    /**
     关键帧点动画例子
     */
    func pointValueAnimation() {
    
        // 创建layer
        let layer = CALayer()
        layer.frame = CGRect(x: 60, y: 60, width: 100, height: 100)
        layer.borderWidth = 1
        
        // 创建easing
         let easingValue = ComplexEasingValue(withFunctionA: .LinearInterpolation, FunctionB: .BounceEaseOut, frameCount: 120)
        
        // 创建关键帧动画
        let keyFrameAnimation = CAKeyframeAnimation(keyPath: "position")
        keyFrameAnimation.values = easingValue.pointValueWith(fromPoint: layer.position, toPoint: view.center)
        keyFrameAnimation.duration = 2
//        layer.position = view.center
        
        // 执行动画
        layer.addAnimation(keyFrameAnimation, forKey: nil)
        view.layer.addSublayer(layer)
    }
    
    /**
     关键帧尺寸动画例子
     */
    func sizeValueAnimation() {
    
        // 创建layer
        let layer = CALayer()
        layer.frame = CGRect(x: 60, y: 60, width: 100, height: 100)
        layer.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5).CGColor
        
        // 创建easing
        let easingValue = EasingValue(withFunction: .ElasticEaseInOut, frameCount: 120)
        
        // 创建关键帧动画
        let keyFrameAnimation = CAKeyframeAnimation(keyPath: "bounds.size")
        keyFrameAnimation.values = easingValue.sizeValueWith(fromSize: layer.bounds.size, toSize: CGSize(width: 150, height: 150))
        keyFrameAnimation.duration = 4
//        layer.bounds.size = CGSize(width: 150, height: 150)
        
        // 执行动画
        layer.addAnimation(keyFrameAnimation, forKey: nil)
        view.layer.addSublayer(layer)
    }


}

下载源码

SwiftEasingAnimation

相关文章

  • 【iOS】缓动(easing)动画简介

    学习文章 Swift-EasingAnimation 网站建设中前端常用的jQuery+easing缓动的动画 E...

  • 动画函数

    Transition TypesiOS easing tween 动画效果缓动函数让界面动画更自然How to c...

  • IOS缓动动画Easing算法使用分析

    对于一个区间内的缓动动画来说 中间的过渡值算法,很多都在使用Easing这种,无论是ActionScript、Ja...

  • 12 条动效设计的原理(上)

    推荐阅读:AE动效插件:Motion2(附有下载链接) 根据上述表格: 1. 缓动(Easing)、偏移和延迟(O...

  • 动画与缓动

  • Openlayers3官网实例一(动画)

    一、动画实例代码 二、关于动画中easing的用法 总结

  • React native 动画详解

    参考文档 :动画概述、动画API、动画缓动函数、interactionmanager 文档其实已经比较详细了,这里...

  • 动画和封装

    动画的种类 闪现匀速缓动 动画原理 盒子的位置 = 盒子本身所在的位置+步长。 缓动动画 三个函数 Math.ce...

  • 动画队列

    动画 jQuery提供了几种动画的操作方法。 .hide([duration ] [,easing ] [,com...

  • jQuery之动画

    一、常用动画 (1) .hide([duration ][,easing ] [,complete ]) 用于隐...

网友评论

    本文标题:【iOS】缓动(easing)动画简介

    本文链接:https://www.haomeiwen.com/subject/imthhttx.html