在NSView上动画帧更改的最佳方法是什么?

时间:2016-10-04 20:41:43

标签: swift macos cocoa caanimation nsanimationcontext

理想情况下,我需要UIView.animateWithDuration这样的内容,但我知道这不是macOS上可用的API。操作NSView的实际帧并为更改设置动画的最佳方法是什么?

我尝试使用CABasicAnimation,但这是在CALayer而不是视图本身上执行的。

我需要的是为实际的视图框架制作动画......(或者这可能是一种不好的做法,而且还有另一种选择?)

因此,经过一番挖掘,我找到了NSAnimationContext。然而,这似乎只是在两个状态之间进行插值/淡化,这不是我想要的感觉。

这是我的代码的一小部分示例:

override func mouseDown(with event: NSEvent) {

    let newSize = NSMakeRect(self.frame.origin.x,
                             self.frame.origin.y - 100,
                             self.frame.width, self.frame.height + 100)

    NSAnimationContext.runAnimationGroup({ (context) -> Void in
        context.duration = 0.5
        self.animator().frame = newSize
        }, completionHandler: {
            Swift.print("completed")
    })
}

0 个答案:

没有答案