3 votes

Comment mettre à l'échelle un uiview et tout ce qu'il contient (autres uiviews dessinés personnalisés) avec une animation ?

J'ai une uiview qui contient d'autres uiviews personnalisées. Maintenant, je veux que, lorsqu'un utilisateur clique sur cette vue parent, elle s'étende à un nouveau cadre défini avec animation. J'ai eu un certain succès en utilisant le bloc d'animation. Le problème est que la vue étendue n'est que la version mise à l'échelle de l'uiview non étendue et qu'elle est donc un peu pixélisée. En appelant les vues enfant setneedsdisplay() après le bloc d'animation, le résultat final de l'expansion de la vue est net (c'est-à-dire non pixellisé). Mais dans les transitions, il est toujours pixellisé.

Quelqu'un peut-il suggérer une meilleure façon de procéder ?

0voto

Caleb Points 72897

C'est une vieille question, mais je vais quand même tenter le coup...

En appelant la vue enfant setneedsdisplay() après le bloc d'animation le résultat final de l'expansion de la vue est net (c'est-à-dire qu'il n'est pas pixelisé)... Quelqu'un peut-il suggérer une meilleure façon de faire cela ?

Une façon d'y parvenir dans Xcode 4.2 est d'insérer une vue d'image contenant une image de la plus grande version de la vue. Vous pourriez créer cette image en le rendu de la vue dans un contexte d'image . Cette approche fonctionnera mieux, bien sûr, si l'animation étend la vue en la mettant simplement à l'échelle ; si vous déplacez des vues secondaires pendant l'animation, une image statique ne sera évidemment pas utile.

Maintenant que Xcode 4.2 n'est plus qu'un lointain souvenir et que les appareils ont beaucoup plus de puissance, l'utilisation des contraintes d'autolayout pour gérer la taille et la position des sous-vues pendant l'expansion devrait donner d'assez bons résultats.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X