动画在移动端、MAC或者PC端都是必不可少的。在iOS 应用程序开发中,想使用简单动画很容易,通过UIView的类方法就可以调用视图动画,如下代码:
//一
UIView.animate(withDuration: 0.5) {
//添加动画代码
}
//二
UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {
//添加想改变的视图属性代码
}) { (finish) in
//添加动画结束后的代码
}
//三
UIView.animate(withDuration: TimeInterval, delay: TimeInterval, usingSpringWithDamping: CGFloat, initialSpringVelocity: CGFloat, options: UIViewAnimationOptions, animations: <#T##() -> Void#>, completion: <#T##((Bool) -> Void)?##((Bool) -> Void)?##> Void#>)
在macOS开发中,想用AppKit里的NSView调用类似于UIKit中对应的UIView能使用动画的类似方法可没有。那么cocoa开发过程中,如何想做到类似于iOS 移动开发中简单动画的实现?那就得仰仗NSAnimationContext。
QQ20170226-195009.pngNSAnimationContext苹果官方文档
如何使用NSAnimationContext,如下代码所示:
NSAnimationContext.runAnimationGroup({ (context) in
self.horse.removeConstraints([top,trailing])
//动画间隔
context.duration = 2
//动画运动模式,easeOut,缓出
let timingFunc = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
context.timingFunction = timingFunc
//设置初始点坐标
self.horse.animator().setFrameOrigin(NSMakePoint(0, 0))
//设置透明度
self.horse.animator().alphaValue = 0.4
}), completionHandler: {
//动画结束后重新约束图片的位置
self.addHorseConstraint()
})
是不是看起来和UIView调用动画方法很像?确实很像!通过NSAnimationContext可以很容易实现如下图所示动画:
horse.gifSwift源码-->github
网友评论