5

Kaydırma görünümü temsilci yöntemim scrollViewDidEndDragging'da gerçekleştirdiğim basit bir animasyon var. Benim homeLabel üstten geliyor parmağınızı kaldırmadan sonra bu animasyonu kullanarakAnimateWithDuration'a sıçrama animasyonu nasıl eklenir?

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 

    NSLog(@"finger was lifted"); 

    [UIView animateWithDuration:1.0 
        animations:^{ 
         self.homeLabel.frame = self.view.frame; 
        }]; 
} 

ve ben bu yüzden yukarıdan geldiğinde, etikete bunu bir sıçrama animasyon eklemek istiyorum:

Bu şuna benzer pürüzsüzce iniş yerine güzel bir sıçrama olacak ... nasıl yapabilirim? thanksss

+0

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/clm/UIView/animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations : completion: – Desdenova

cevap

0

İyi bir çözüm, görünümünüze özel bir zamanlama işlevi eklemek için addAnimation:forKey: yöntemini geçersiz kılan özel bir katman oluşturmaktır.

Bu answer, bunun nasıl yapılacağının ayrıntılarına girer.

Diğer bir seçenek anahtar kare animasyonuna bakmaktır. Bu question and answer, bu yaklaşımı çok iyi kapsamaktadır.

15

usingSpringWithDamping animasyon işlevini kullanabilirsiniz.

[UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.2 initialSpringVelocity:5.0 options:UIViewAnimationOptionCurveLinear animations:^{ 
    self.homeLabel.frame = self.view.frame; 
} completion:^(BOOL finished) { 

}]; 

ayarlanması Spring Damping ve Initial Spring Velocity size istediğiniz etkiyi verebilir.

+1

Bu en iyi cevaptır. (vote.) 'animateWithDuration: delay: usingSpringWithDamping: initialSpringVelocity: seçenekler: animasyonlar: tamamlama: 'yöntem OP'nin ne yapmak istediğine göre uyarlanmıştır. Github üzerinde tam olarak bu çağrıyı kullanarak bir saatin ellerini canlandıran bir demo programı yazdım ve çok gerçekçi bir sıçrama görünümü verdi. –