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