Mam dwie animacje rotacji w moim CAAnimationGroup
, taki, który zaczyna się od zera, a drugi, który powtarza i autoreverses z tego stanu:Jaka jest maksymalna wartość czasu trwania (CFTimeInterval) dla CAAnimationGroup?
- (void)addWobbleAnimationToView:(UIView *)view amount:(float)amount speed:(float)speed
{
NSMutableArray *anims = [NSMutableArray array];
// initial wobble
CABasicAnimation *startWobble = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
startWobble.toValue = [NSNumber numberWithFloat:-amount];
startWobble.duration = speed/2.0;
startWobble.beginTime = 0;
startWobble.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[anims addObject:startWobble];
// rest of wobble
CABasicAnimation *wobbleAnim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
wobbleAnim.fromValue = [NSNumber numberWithFloat:-amount];
wobbleAnim.toValue = [NSNumber numberWithFloat:amount];
wobbleAnim.duration = speed;
wobbleAnim.beginTime = speed/2.0;
wobbleAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
wobbleAnim.autoreverses = YES;
wobbleAnim.repeatCount = INFINITY;
[anims addObject:wobbleAnim];
CAAnimationGroup *wobbleGroup = [CAAnimationGroup animation];
wobbleGroup.duration = DBL_MAX; // this stops it from working
wobbleGroup.animations = anims;
[view.layer addAnimation:wobbleGroup forKey:@"wobble"];
}
Od CFTimeInterval jest zdefiniowany jako podwójne, staram ustawienie czasu trwania grupy animacji do DBL_MAX
, ale to zatrzymuje działanie grupy animacji. Jeśli jednak ustawię go na dużą liczbę, na przykład 10000, działa poprawnie. Jaka jest największa liczba, której mogę używać przez okres CAAnimationGroup
, aby zapewnić, że będzie działała jak najbliżej nieskończoności?
UPDATE: Wydaje się, że jeśli mogę umieścić w bardzo dużej wartości, takich jak DBL_MAX/4.0
następnie zamarza na sekundę, po czym zaczyna animacji. Jeśli wstawię wartość DBL_MAX/20.0
, to zamrożenie na początku jest dużo mniejsze. Wydaje się, że posiadanie tak dużej wartości przez czas trwania powoduje jej zamrożenie. Czy istnieje lepszy sposób robienia tego poza użyciem bardzo dużej wartości w czasie trwania?
Chcesz, aby ta grupa animacji była powtarzana na zawsze? –
Tak, ale chcę tylko, aby druga część grupy powtarzała się na zawsze. – jowie
Czy na pewno chcesz w ogóle ustawić czas trwania? Co stanie się, jeśli nie ustawisz opcji? –