ひさびさのObjective-Cの記事。
iPhoneでよく見るガタガタするアニメーションの実装方法。
めっちゃ前のメモ書きを見つけたので、せっかくだから投稿します。(なんか、探すの苦労した覚えが・・・)
ちなみに、ガタガタアニメーションとは、iPhoneでアイコンを押しっぱなしにすると、ガタガタするアレです。
- アレ
正式名称はわかりません。(勝手にそう呼んでいます。)
#define MAXFLOAT 0x1.fffffep+127f - (void)shakeStatus:(BOOL)enabled { if (enabled) { CGFloat rotation = 0.03; CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"transform"]; shake.duration = 0.13; shake.autoreverses = YES; shake.repeatCount = MAXFLOAT; shake.removedOnCompletion = NO; shake.fromValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.layer.transform,-rotation, 0.0 ,0.0 ,1.0)]; shake.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.layer.transform, rotation, 0.0 ,0.0 ,1.0)]; [self.layer addAnimation:shake forKey:@"shakeAnimation"]; } else { [self.layer removeAnimationForKey:@"shakeAnimation"]; } }