comment puis-je faire UIView animateWithDuration dans viewDidLoad? IOS 7

J'essaye ceci dans viewDidAppear mais j'ai une seconde de delay = (que puis-je faire? Pour travailler dans viewDidLoad?

-(void)viewDidAppear:(BOOL)animated{ fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; fullRotation.fromValue = [NSNumber numberWithFloat:0]; fullRotation.toValue = [NSNumber numberWithFloat:((720*M_PI)/360)]; fullRotation.duration = 5; // fullRotation.repeatCount = 1e10f; [_propImaCirculoCompleto.layer addAnimation:fullRotation forKey:@"360"]; } 

Vous ne devriez pas faire d'animation dans viewDidLoad car la vue n'aura pas encore de vue en viewDidLoad , donc l'animation n'est pas pertinente.

Quelques reflections sur votre exemple de code:

  • Vous pouvez utiliser viewDidAppear aussi longtime que vous voulez l'animation chaque fois que la vue apparaît, et pas seulement la première fois qu'elle est présentée.

  • L'utilisation de Core Animation dans un bloc d'animation n'est pas nécessaire. Fais l'un ou l'autre.

Suggestions

Si vous essayez d'animer l'apparence d'une vue gérée par un controller de vue différent, le controller présentateur est responsable de l'animation. Il existe plusieurs façons de l'implémenter en fonction de votre version minimale prise en charge d'iOS.

  • Dans iOS 5+, vous pouvez utiliser un controller de conteneur personnalisé pour présenter un controller de vue enfant avec une animation définie.

  • Dans iOS 7, vous pouvez utiliser 'presentViewController: animation: completion' et spécifier une animation personnalisée. Vous devez ensuite définir la propriété transitioningDelegate et requestr au délégué de fournir l'animateur pour la transition.

Je n'ai pas de code d'échantillon prêt pour le dessus mais c'est ce que je regarderais.

Essayez de split votre animation par deux rotations de 180 degrés. Il semble que iOS 7 est paresseux et ne tournera pas de 360 ​​:)