13

理想的には のようなものが必要ですが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")
    })
}
4

1 に答える 1

0

半分ほど下に、探しているものに適していると思われる Smooth NSView Scale Animation があります。ビューを拡大縮小して維持しているため、その問題にも対処できます。

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

于 2021-09-04T16:02:10.743 に答える