Bir UIView animasyon bloğu içinde, mevcut animasyonun süresini elde etmenin bir yolu var mı?Geçerli animasyon bloğunun animasyon süresini öğrenin
[UIView animateWithDuration:1.0 animations:^{
// float duration = ?
}];
Bir UIView animasyon bloğu içinde, mevcut animasyonun süresini elde etmenin bir yolu var mı?Geçerli animasyon bloğunun animasyon süresini öğrenin
[UIView animateWithDuration:1.0 animations:^{
// float duration = ?
}];
Blokları kullandığınızdan, neden sadece bir değişkene sahip değiliz?
CGFloat duration = 1.0;
[UIView animateWithDuration:duration animations:^{
CGFloat theDuration = duration;
}];
Kabul. Zaten süreyi geçiyoruz o zaman neden bunun için başka bir yol bulmalıyız. – Mrug
[CATransaction animationDuration]
sen Kolayca yeterli akım animasyon alabilirsiniz
Ne yazık ki işe yaramazsa, UIView animasyon bloğu görünüşe göre doğrudan CATransaction ile çalışmıyor. –
aradığınızı olduğunu. Örneğin, bir CATransaction
kurma:
CAAnimation *animation = [self.layer animationForKey:self.layer.animationKeys.firstObject];
[CATransaction begin];
[CATransaction setAnimationDuration:animation.duration];
[CATransaction setAnimationTimingFunction:animation.timingFunction];
// CALayer animation here
[CATransaction commit];
TL; DR: -animationForKey değil CALayer -actionForKey :, kullanın:
@Dimitri Bouniol 'ın cevabı benim için işe yaramadı An An çağrıldığında Bir animasyon bloğu içinde etkilenen setter. Anlayışımın sebebi, UIView'in animasyon sisteminin gerçek animasyonu başlatmadan önce durumu belirlemesidir (ve gerçek animasyonu başlatmadan önce ayarlayıcıları çağırır). Benim için işe yarayan şey, katmandaki benzer-actionForKey: yöntemini çağırıyordu. Döndürülen eylem, uygun süreye ayarlandı ve cevabında olduğu gibi kullanılabilir.
CAAnimation *animation = (CAAnimation*)
[self.layer [email protected]"position"]; // or property of interest
[CATransaction begin];
[CATransaction setAnimationDuration:animation.duration];
[CATransaction setAnimationTimingFunction:animation.timingFunction];
// CALayer animation here
[CATransaction commit];
Ne demek istediğimi anladığımdan emin değilim, animasyon süresi 1.0 değil mi? –
evet, ancak süreyi bilmesi gereken bloğun içinde bir bileşen kullanıyorum ve süreyi – adamsiton
iyi bir soru olarak iletmek istemiyorum Üzgünüz, yardım edemedim. –