Question

J'écris une application de dessin qui affiche un contrôleur de vue d'outils lorsque l'utilisateur clique sur un élément de la barre d'outils. Cependant, plusieurs de mes bêta-testeurs ont signalé que la palette d'outils s'ouvrait trop lentement. J'utilise le standard presentModalViewController: animated: call pour afficher les outils, et j'ai essayé de l'envelopper dans un bloc de code comme celui-ci pour l'accélérer:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.1];
[self presentModalViewController:settings animated:YES];
[UIView commitAnimations];

Malheureusement, cela ne fonctionne pas. Si vous dites animé: NON, cela fonctionne mieux, mais la vue de la zone de dessin sous-jacente est immédiatement supprimée (car le contrôleur pense qu'elle n'est plus visible), de sorte que l'animation se déroule sur un arrière-plan blanc.

Quelqu'un a-t-il déjà fait cela auparavant qui voudrait donner des conseils? Je l'apprécierais!

Était-ce utile?

La solution

Une question similaire est posée ici .

Vous pouvez également modifier la vitesse à l'aide de cette technique, mais dans le cadre de mes expérimentations, elle le fait sur un arrière-plan vide, comme vous l'avez suggéré.

Autres conseils

Modifié: ajout d'une autre option avec confinement du contrôleur pour iOS 5 et versions ultérieures.

Une autre solution consiste à définir l'espace-temps de la couche.

Ceci est effectué via la propriété speed de CALayer. Pour ralentir l'animation, vous pouvez utiliser:

MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil];
// Makes all animations 10 times slower
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc
vc.view.layer.speed = 0.1; 
[self presentModalViewController:vc animated:YES];

Notez que la solution proposée dans l'article lié ne fonctionnera pas si votre objectif est de modifier la vitesse d'animation du contrôleur de vue modale que vous êtes sur le point de présenter (par exemple si vous utilisez UIModalTransitionStyleCoverVertical).

La vitesse du calque n'est pas une valeur absolue, mais une fonction de l'espace-temps parent de ce calque (à moins que le calque ne se trouve bien entendu à la racine de la hiérarchie des calques). Par exemple, lorsque vous définissez la vitesse d'un calque sur 2, ses animations s'exécutent deux fois plus vite que les animations de ce parent.

Une autre option consiste à utiliser le confinement du contrôleur de vue. (iOS 5 et versions ultérieures uniquement)

http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81 .

Vous avez le plein contrôle de l'animation avec transitionFromViewController d'UIViewController: toViewController: durée: options: animations: complétion:.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top