ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

iphoneでよく見るガタガタアニメーション

スポンサードリンク

http://www.flickr.com/photos/97859317@N00/38836968
photo by heipei


ひさびさのObjective-Cの記事。



iPhoneでよく見るガタガタするアニメーションの実装方法。


めっちゃ前のメモ書きを見つけたので、せっかくだから投稿します。(なんか、探すの苦労した覚えが・・・)


ちなみに、ガタガタアニメーションとは、iPhoneでアイコンを押しっぱなしにすると、ガタガタするアレです。

  • アレ

f:id:aipacommander:20150126190846j:plain


正式名称はわかりません。(勝手にそう呼んでいます。)

#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"];
  }
}