Swift3.0 开发macOS应用程序 (8): NSAnim

作者: MNode | 来源:发表于2017-02-26 19:52 被阅读139次

动画在移动端、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。

NSAnimationContext苹果官方文档

QQ20170226-195009.png

如何使用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.gif

Swift源码-->github

相关文章

网友评论

    本文标题:Swift3.0 开发macOS应用程序 (8): NSAnim

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