理想的には のようなものが必要ですがUIView.animateWithDuration
、これは macOS で利用できる API ではないことはわかっています。NSView の実際のフレームを操作し、変更をアニメーション化する最良の方法は何ですか?
を試してみましCABasicAnimation
たが、それはビュー自体ではなく CALayer で実行されます。
私が必要としているのは、実際のビュー フレームをアニメーション化することです... (または、それは悪い習慣であり、別の方法がありますか?)
そのため、少し掘り下げた後、私は見つけましNSAnimationContext
た。ただし、それは単に 2 つの状態の間を補間/フェードしているように見えますが、これは私が求めている感じではありません。
ここに私が持っているコードの小さなサンプルがあります:
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")
})
}