2016-08-01 1 views
0

Je veux animer le centre d'un UIView, et je l'ai fait en viewDidLoad:UIView n'anime pas

_test.center = CGPointMake(100.0,100.0); 
[UIView animateWithDuration:10.0 
     delay:5 
     options:UIViewAnimationOptionCurveLinear 
     animations:^{_test.center = CGPointMake(100.0,-100.0);} 
     completion:^(BOOL finished) { 

}]; 

Mais quand je lance le code, le centre de vue de test est déjà à 100, - 100 Pourquoi ça n'anime pas?

+2

Déplacer le code 'viewDidAppear'. – Avi

+0

@Avi Cela fonctionne grâce! – GiddensA

Répondre

0

Déplacez le code de votre viewDidLoad vers votre viewDidAppear. Dans viewDidLoad, le UIView a été chargé, mais il n'est pas encore présent.

0

Je suppose que vous utilisez des contraintes automatiques qui empêchent d'animer les vues comme vous le faites.

Pour résoudre ce problème essayez ces étapes:

Première:

Déplacez votre code - (void)viewDidLayoutSubviews.

Deuxième:

faire cela avant et après avoir fait une animation à votre vue:

- (void)viewDidLayoutSubviews{ 

    _test.translatesAutoresizingMaskIntoConstraints = YES; 

    _test.center = CGPointMake(100.0,100.0); 
    [UIView animateWithDuration:10.0 
          delay:5 
         options:UIViewAnimationOptionCurveLinear 
         animations:^{_test.center = CGPointMake(100.0,-100.0);} 
         completion:^(BOOL finished) { 
         }]; 

    [_test updateConstraints]; 

}