J'ai un uiview (et donc une calayer) que j'essaie de vous déformer ou de vous plier légèrement dans un espace 3D. C'est-à-dire que j'imagine que mon UIView est une étiquette plate que je veux partiellement envelopper autour d'une bouteille de bière (pas de 360 degrés autour, juste sur un "côté"). P>
J'ai pensé que cela serait possible en appliquant une transformation à la couche de la vue, mais aussi loin que je peux le dire, cette transformation est limitée à la rotation, à la balance et à la traduction de la couche uniformément. Je pourrais me tromper ici, alors que mon algèbre linéaire est brumeuse à ce stade, de dire le moins. P>
Comment puis-je y parvenir? p>
3 Réponses :
Le meilleur que vous puissiez faire avec l'animation de base est de faire une approximation linéaire par morceaux.
Par exemple, vous pouvez diviser votre "cylindre" en huit segments et les organiser comme: p> vous pouvez leur donner la même image mais changer la traduction afin qu'ils alignent sur les bords. Ensuite, donnez à chacun une transformation (une simple compression horizontale ou une sorte de "clé de voûte" si vous allez chercher un aspect de perspective). P> En réalité, vous voudrez probablement utiliser plus de huit segments. Notez qu'ils seraient concentrés près des bords de votre vue. p> Cette animation CSS pourrait vous donner une certaine inspiration. p> p>
Regardez le code d'exemple de Apple PVRTExTRELOAder Il s'agit d'un projet OpenGL qui démontre comment afficher une texture (votre étiquette) sur une surface (sur un cylindre dans votre cas). P>
Jeff Lamarche a posté une belle Tutoriel pour commencer avec Open Gl. P>
Comment cette réponse est-elle pertinente? C'est la bonne direction, mais cela ne mentionne rien de "pliage" d'une couche.
Il existe quelques exemples "déformation" sur cette page: http: //www.sgi.com/products/software/opengl/examples/more_samples/ P>
i (honnêtement) Je ne suis pas sûr de savoir comment le faire, mais j'ai eu cette page bookmarked depuis un certain temps pour essayer de vous déformer / morpher avec un maillage / grille. P>
meilleure des chances. P>
^. ^ p>
Vous avez besoin de OpenGL pour cela. (Je ne sais pas comment.)
La réponse de Kenny à cette question: Stackoverflow.com/Questions/2351586/... < / a> montre comment faire des distorsions plus complexes d'une couche de 2-D, mais je ne crois pas que la courbure est possible en utilisant seulement des transformations de ce type.
@Brad Larson: Droite, je peux faire des mouchoirs comme ça sans problème. C'est la courbure que je suis après. Je ne connais rien de OpenGL mais si quelqu'un le fait serait acceptable.