Eğer/atalet kolaylığı-out vasıtasıyla üretilebilir bir ağırlık kral simüle olarak tarif olduğu etkilerin tür (yavaş hızlı, bitiş) ve kolay (hızlı, yavaş, bitiş) zamanlama fonksiyonları. dışarı hafifletilmesi ve hafifletilmesi için
Destek iOS mevcuttur, bu yüzden herhangi bir harici kütüphane ne de emeğine (tahmin edebileceğiniz gibi, her ne kadar, sizin etkisi ince ayar bir sürü gerekir) gerek yoktur.
Bu kolaylığı aşımı etkisi ile belirli bir pozisyona bir nesnenin çevirisini Canlandıracağımız: Bir UIPanGestureRecognizer
aracılığıyla hareketini işlemek durumunda
[UIView animateWithDuration:2.0 delay:0
options:UIViewAnimationOptionCurveEaseOut
animations:^ {
self.image.center = finalPosition;
}
completion:NULL];
}
, jest tanıyıcı iki önemli bilgilere sağlayacaktır Son konumu hesaplayın: Sırasıyla nesnenin ne kadar hızlı ve ne kadar hareket ettiğini gösteren velocity
ve translation
.
UIPanGestureRecognizer* panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
[yourView addGestureRecognizer:panGestureRecognizer];
[panGestureRecognizer release];
Sonra işleyicinizde animasyon işlemek:
Böyle (sanırım bu Canlandırmak istediğiniz nesne olurdu) sizin görünümünde bir tava jest tanıyıcı yükleyebilirsiniz
- (void)handlePanFrom:(UIPanGestureRecognizer*)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
CGPoint velocity = [recognizer velocityInView:recognizer.view];
if (recognizer.state == UIGestureRecognizerStateBegan) {
} else if (recognizer.state == UIGestureRecognizerStateChanged) {
<track the movement>
} else if (recognizer.state == UIGestureRecognizerStateEnded) {
<animate to final position>
}
}
Animasyon bitmeden animasyonu durdurmak istediğinizde animasyonu durdurmam gerekirse ne yapmalıyım? Animasyon her zaman tamamlanana kadar çalışır. – Howard
"interruptible animations" ı googling yapmayı deneyin veya yeni bir soru yayınlayın (ve isterseniz yorumlarınızı buraya gönderin). – sergio
Tamamlanmadan önce animasyonu temizlemenin işimi yaptığını buldum. Teşekkürler. – Howard