private func radian(degree: CGFloat) -> CGFloat {
return CGFloat(Double(degree / 180) * M_PI)
}
func shake() {
view.layer.setAnchorPoint(CGPointMake(0.5, 0.8), forView: view)
let anim = CAKeyframeAnimation(keyPath: "transform.rotation.z")
anim.duration = 0.8;
anim.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
// ここは割と適当
anim.values = [radian(-12), radian(12), radian(-8), radian(8), radian(-4), radian(4), radian(-1.8), radian(1.8), 0.0]
view.layer.addAnimation(anim, forKey: "shaking")
}
アンカーポイントの調整に http://qiita.com/usagimaru/items/b085d13ac47707ce5c69 を使っている。