IOS动画ViewAnimations

商开济
2023-12-01
UIKit中的动画API
UIView.animateWithDuration
UIView.transitionWithView
UIView.animateKeyframesWithDuration
UIView.addKeyframeWithRelativeStartTime


1.UIView.animateWithDuration
函数原型
class func animateWithDuration(duration: NSTimeInterval, delay: NSTimeInterval, usingSpringWithDamping dampingRatio: CGFloat, initialSpringVelocity velocity: CGFloat, options: UIViewAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?)
一共有7个参数:
duration
表示动画执行时间。
delay
动画延迟时间。
usingSpringWithDamping
表示弹性属性。
initialSpringVelocity
初速度。
options
可选项,一些可选的动画效果,包括重复等。
animations
表示执行的动画内容,包括透明度的渐变,移动,缩放。
completion
表示执行完动画后执行的内容。
UIView.animateWithDuration(5, delay: 0.5, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: .Repeat, animations: { () -> Void in
            self.animationView.center.y += 100
        }) { (Bool) -> Void in
            println("finish")
        }
这句代码的意思是中心Y向向下100,执行完后打印finish
UIView.animateWithDuration这个API说穿了就是逐渐改变UIView的某项属性,这些属性包括:位置,大小,透明度,颜色等等。


2.UIView.transitionWithView,这是一个过度动画,主要用于UIView进入或者离开视图。
函数原型
class func transitionWithView(view: UIView, duration: NSTimeInterval, options: UIViewAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?)
一共五个参数:
view
这当然就是指定要进行动画的对象了。
duration
和上面一样这个参数指定动画时间长短。
options
这是一个可选参数,虽然是可选的但是不填这个API就没意义了,因为UIView如何进入视图就是由这个参数决定。到底是像书页一样翻进去,还是像百叶窗一样转动就是由这个参数决定,具体有哪些可以选择,点进去看看就知道了。
animations
这个选项你可以将它理解为在动画结束后UIView的形态。
completion
动画结束后运行的代码。


3.UIView.animateKeyframesWithDuration
这个动画分了很多阶段完成,我们当然可以用我们提到的第一个函数UIView.UIView.animateWithDuration来完成,但是,你不觉得嵌套加嵌套显得很不好看吗,我们当然还有更好的方法来实现,就是我们现在要说的,先来看一下函数原型:
class func animateKeyframesWithDuration(duration: NSTimeInterval, delay: NSTimeInterval, options: UIViewKeyframeAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?)
一共五个参数:
duration:整个动画过程的时间。
delay:延迟多久开始。
options:可选项,比如说重复,倒着来一遍等效果,自己都试试看吧。
animations:需要执行的动画,里面可以是多个UIView.addKeyframeWithRelativeStartTime。
至于这个UIView.addKeyframeWithRelativeStartTime方法,类似于我们提到的第一个UIView.UIView.animateWithDuration,也是一个属性渐变的方法,不过这个方法只能写在他的爸爸 UIView.animateKeyframesWithDuration的animation参数函数块中。
completion:动画执行结束之后执行的代码。
 类似资料: