Каков наилучший подход к анимации кадров в NSView?
В идеале мне нужно что-то вроде UIView.animateWithDuration
Однако я знаю, что это не API, который доступен в MacOS. Каков наилучший способ манипулировать фактическим кадром 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")
})
}
1 ответ
Примерно на полпути есть анимация Smooth NSView Scale Animation, которая, кажется, подходит для того, что вы ищете. Поскольку вы масштабируете и сохраняете вид галопом, он также решает эту проблему.
https://www.advancedswift.com/nsview-animations-guide/#smooth-nsview-scale-animations