我的目的是每当用户试图在没有填写所有字段的情况下使用该按钮时,让屏幕抖动。
出现以下错误:
“AddViewController”类型的值没有成员“shake”
AddViewController属于类UIViewController,但更改extensions类也不起作用。

... else {
      self.shake()
        }

extension UIView {
    func shake() {
        let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
        animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
        animation.duration = 0.6
        animation.values = [-20.0, 20.0, -20.0, 20.0, -10.0, 10.0, -5.0, 5.0, 0.0 ]
        layer.add(animation, forKey: "shake")
    }
}

最佳答案

您需要从vc的视图调用它,因为扩展名是UIView

self.view.shake()

使用
self.shakeView() // directly inside the vc


extension UIViewController {
   func shakeView() {
    // .....
    // here use the view
     view.layer.add(animation, forKey: "shake")
  }
}

10-08 05:29