理想情况下,我需要类似的东西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")
})
}