动画之UIView动画

和丰羽
2023-12-01

动画之UIView动画

UIView有三种类型的动画:

  • animate动画
  • transition动画
  • animateKeyframes动画

animate动画

它是对UIView的属性进行动画的一种方法,能进行动画显示的动画包括:
- 位置和大小:bounds , frame , center
- 背景与透明: backgroundColor , alpha
- 转换: transform
它包括一种特殊很炫的动画形式:弹簧动画usingSpringWithDamping…

open class func animate(withDuration duration: TimeInterval, delay: TimeInterval, options: UIViewAnimationOptions = [], animations: @escaping () -> Swift.Void, completion: ((Bool) -> Swift.Void)? = nil)
#duration :动画总的时间
#delay    :设置延迟的时间
#options  :动画选项,能让动画更逼近现实世界的运动
#animations : 设置view属性的地方。根据所修改的属性,实现动画的闭包
#completion : 动画结束以后需执行的操作,Bool是反映动画执行结果是否成功。
open class func animate(withDuration duration: TimeInterval, delay: TimeInterval, usingSpringWithDamping dampingRatio: CGFloat, initialSpringVelocity velocity: CGFloat, options: UIViewAnimationOptions = [], animations: @escaping () -> Swift.Void, completion: ((Bool) -> Swift.Void)? = nil)
//与上面的类方法相比较,弹簧动画多了下面两个属性:
#dampingRatio :阻尼的大小,取值范围是:0〜1.值越小,说明阻尼越小,动的幅度越大
#velocity     : 它定义了初始速度

transition动画

过渡转变(Transition)动画:
1.它主要用于展示(消除)一个UIView的场景

open class func transition(with view: UIView, duration: TimeInterval, options: UIViewAnimationOptions = [], animations: (() -> Swift.Void)?, completion: ((Bool) -> Swift.Void)? = nil)
#view : 要添加View的父级View,其实动画主要也是对这个View的变化,如果这个View没有颜色,或者与背景色一致,那你基本看不出动画
//其它属性与上面的大同小异

2.从一个View转换到另一个View的情况。

open class func transition(from fromView: UIView, to toView: UIView, duration: TimeInterval, options: UIViewAnimationOptions = [], completion: ((Bool) -> Swift.Void)? = nil)
#fromView :原始展示的View
#toView   :需要展示的View

animateKeyframes动画

关键帧动画。当一个View需要配置多个动画,且动画有先后顺序的情况可使用关键帧动画。

open class func animateKeyframes(withDuration duration: TimeInterval, delay: TimeInterval, options: UIViewKeyframeAnimationOptions = [], animations: @escaping () -> Swift.Void, completion: ((Bool) -> Swift.Void)? = nil)
//传参与上面所讲类似,注意:options可能不同
open class func addKeyframe(withRelativeStartTime frameStartTime: Double, relativeDuration frameDuration: Double, animations: @escaping () -> Swift.Void)
#frameStartTime :该帧开始的时间(0〜1)
#frameDuration  :该帧动画时间(0~1)
 类似资料: