📜  键盘推视图向上颤动 (1)

📅  最后修改于: 2023-12-03 15:12:34.533000             🧑  作者: Mango

键盘推视图向上颤动

这是一个以键盘为触发器,通过视图动画的方式实现向上颤动效果的小工具。

实现思路
  1. 监听键盘事件,当用户按下指定的按键时触发动画。
  2. 使用 UIView 提供的动画函数,定义颤抖的效果。
  3. 将动画应用到目标视图中。
代码实现
// 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 函数时需要保证闭包在异步线程中执行,否则会导致主线程卡顿。