SORU
30 Mayıs 2009, CUMARTESİ


nasıl iphone'In yalpalıyor simgesi etki oluşturmak için?

Görüntüyü ileri geri benim uygulaması iPhone üzerinde aşağı tuşuna bastığınızda bocalama simgeleri nasıl benzer tereddüd etmek istiyorum. Bunu yapmanın en iyi yolu nedir?

Bu animasyonlu GİF kullanarak değil animasyonlar içine benim ilk baskını olduğunu. Bu fikir biraz görüntüyü ileri geri sallanıyor efekti oluşturmak için döner. CABasicAnimation ve CAKeyframeAnimation kullanarak baktım. CABasicAnimation bir titreme yerden atlar çünkü tekrarlar her zaman oluşturur ve geri açılıyor gibi değil. CAKeyframeAnimation işe giremiyorum dışında bir çözüm gibi görünüyor. Ben bir şey eksik olmalı. İşte benim kod CAKeyframeAnimation çalışmıyor):

    NSString *keypath = @"wobbleImage";
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:keypath];
animation.duration = 1.0f;
animation.delegate = self;
animation.repeatCount = 5;

CGFloat wobbleAngle = 0.0872664626f;
NSValue *initial = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0.0f, 0.0f, 0.0f, 1.0f)];
NSValue *middle = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(wobbleAngle, 0.0f, 0.0f, 1.0f)];
NSValue *final = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(-wobbleAngle, 0.0f, 0.0f, 1.0f)];
animation.values = [NSArray arrayWithObjects:initial, middle, final, nil];

[imageView.layer addAnimation:animation forKey:keypath];

< / ^ br . Ya da sadece eksik olduğuma çok daha basit bir çözüm olabilir. Herhangi bir işaretçiler takdir ediyorum. Teşekkürler!

CEVAP
19 NİSAN 2011, Salı


Ramin cevabı çok iyiydi, ama OS4 beri aynı etkiyi animateWithDuration kullanarak basit bir işlevi de elde edilebilir.

(gelecek google'cuların için onu örnek uyarlanmıştır)

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

- (void)startWobble {
 itemView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-5));

 [UIView animateWithDuration:0.25 
      delay:0.0 
      options:(UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse)
      animations:^ {
       itemView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(5));
      }
      completion:NULL
 ];
}

- (void)stopWobble {
 [UIView animateWithDuration:0.25
      delay:0.0 
      options:(UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveLinear)
      animations:^ {
       itemView.transform = CGAffineTransformIdentity;
      }
      completion:NULL
  ];
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007