Question

Je développe ma première application pour iPhone et je l'ai dépassée. et maintenant je termine en forme et amp; détails de finition.

J'ai une vue qui glisse du bas de l'écran vers le volet des paramètres. La vue elle-même a une opacité de 0 et une vue UIImageView à l'intérieur de celle-ci, avec un fichier PNG créant l'arrière-plan réel de la vue, derrière les contrôles. J'utilise les appels d'animation intégrés pour UIView, comme dans;

[self.view addSubview:settingsViewController.view];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

frame.origin.y = 200.0;
settingsViewController.view.frame = frame;

[UIView commitAnimations];

Malheureusement, l’animation sur le périphérique est instable. Le fichier PNG que j’utilise comme arrière-plan n’est transparent que dans les 30 premiers pixels sur sa largeur. Si j'utilise un fichier PNG sans transparence, l'animation est fluide.

L’application elle-même est très graphique, de sorte que la vue s’anime au-dessus d’un écran rempli d’autres fichiers PNG.

Je serais extrêmement surpris que l'appareil ne puisse pas gérer ce type d'animation en douceur, ce qui m'amène à penser que je dois affiner mon approche. Les pensées que j'ai eues jusqu'à présent incluent:

Peut-être dois-je utiliser directement Core Animation? La mise en cache de la vue derrière le volet des paramètres avant l’animation serait-elle bénéfique?

C’est un nouveau territoire pour moi et je sais qu’il doit exister des moyens d’optimisation considérés comme de bonnes pratiques. Merci pour votre temps!

Était-ce utile?

La solution

Peu importe que vous utilisiez Core Animation "directement". ou animer la propriété center: elle est instable, car le matériel graphique doit composer l'image transparente avec l'arrière-plan sur chaque image de l'animation. Vous avez dit vous-même que l’utilisation d’un fichier PNG complètement opaque rend l’animation fluide.

Essayez d’exécuter l’application sous Instruments. L’outil Core Animation contient des cases à cocher qui mettent en évidence les zones composites en temps réel et qui peuvent vous donner des conseils sur la façon de refaire votre dessin.

Si seuls les 30 premiers pixels doivent être transparents, il peut être intéressant de scinder l’arrière-plan en deux vues, une bande de 30 pixels en haut (transparent) et le reste (opaque). Si vous composez la totalité de la vue à chaque image, cette modification peut suffire à lui faire savoir qu’il ne doit composer que les 30 pixels du haut.

Autres conseils

J'ai eu quelques problèmes avec l'animation du cadre dans le passé, essayez plutôt d'animer la propriété center.

Aussi, pourquoi avez-vous besoin de la transparence dans l’arrière-plan? Ne pourrez-vous pas simplement utiliser cette image comme arrière-plan de la vue qui le contient et éliminer le besoin d’UIImageView?

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