在 NSView 上对帧更改进行动画处理的最佳方法是什么?



理想情况下,我需要像UIView.animateWithDuration这样的东西,但是我知道这不是macOS上可用的API。操纵NSView的实际帧并使其动画化的最好方法是什么?

我试着去CABasicAnimation,然而,这是在callayer上执行的,而不是视图本身。

我需要的是动画的实际视图框架…(或者这是一个不好的做法,有其他选择吗?)

因此,经过一番挖掘,我找到了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")
    })
}

大约在中间有一个平滑的NSView缩放动画,它似乎是你正在寻找的。因为你在缩放和保持视图居中,它也处理了这个问题。

https://www.advancedswift.com/nsview-animations-guide/smooth-nsview-scale-animations

最新更新