📅  最后修改于: 2023-12-03 15:12:34.533000             🧑  作者: Mango
这是一个以键盘为触发器,通过视图动画的方式实现向上颤动效果的小工具。
UIView
提供的动画函数,定义颤抖的效果。// 1. 定义监听键盘事件的函数
func startAnimationOnKeyDown() {
let keyDown = NSEvent.EventTypeMask.keyDown
let keyUp = NSEvent.EventTypeMask.keyUp
let mask = keyDown.union(keyUp)
NSEvent.addGlobalMonitorForEvents(matching: mask) { (event) in
if event.type == .keyDown && event.keyCode == 49 {
// 2. 定义颤抖的动画效果
let animation = CAKeyframeAnimation(keyPath: "transform")
animation.values = [
NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)),
NSValue(caTransform3D: CATransform3DMakeTranslation(0, -5, 0)),
NSValue(caTransform3D: CATransform3DMakeTranslation(0, 5, 0))
]
animation.keyTimes = [0, 0.5, 1]
animation.repeatCount = 2
animation.duration = 0.15
animation.isAdditive = true
animation.calculationMode = .linear
// 3. 将动画应用到目标视图中
myView.layer?.add(animation, forKey: "shake")
}
}
}
在需要启动按键颤动的场景中,调用 startAnimationOnKeyDown()
函数即可。
keycode
为 49 的按键代表的是空格键,可以根据需求替换成其他按键。addGlobalMonitorForEvents
函数时需要保证闭包在异步线程中执行,否则会导致主线程卡顿。