CGAffineTransform Réinitialiser
3I avoir une image qui obtient manipulés par le toucher.
Permet de dire que ses une image d'une flèche qui pointe vers le haut. Après qu'il a été tourné de 180 degrés, de sorte que la flèche pointe vers le bas maintenant, je veux réinitialiser CGAffineTransform propriétés de sorte qu'il pense maintenant sa tourné le dos à 0 degrés.
Je veux car j'ai de translation, rotation, échelle, etc si l'image de l'angle est de 0 OU 180.
Merci d'avance.
ÉDITÉ Ater 5 réponses:
Hmm, je ne suis pas sûr si l'un de ces réponses faire ce que je voulais. Je m'excuse de ne pas être clair.
- Une Image avec la flèche pointant vers le haut est touché et ému à droite - tout va bien.
- Image est pivotée avec la rotation de la geste et se tourna 180deg - tout va bien
- Image est maintenant touché et ému à droite - Depuis les coordonnées sont la tête en bas, l'image est de sauter de faire mes autres séquences d'animation, aller tordu.
Pour prévenir le problème ci-dessus et quelques autres, je veux tout réinitialiser après qu'il a été tourné de 180. Par exemple, une fois l'image transformée 180deg, CGAffineTransform propriétés sait que c'est tourné de 180%. Je veux réinitialiser le poperties à cette époque, donc CGAffineTransform pense de son transformé 0 degrés au lieu de 180, même si l'image est à l'envers visuellement. Je veux que cela se produire sans aucune modification visuelle, dès que sa rotation à 180deg.
Espère que c'est plus clair....
Vous devez vous connecter pour publier un commentaire.
Si vous essayez de réinitialiser la transformation, de sorte que l'image apparaît comme il l'a fait à l'origine, vous pouvez simplement définir la transformation de retour à l'identité.
Si vous souhaitez appliquer arbitraire des transformations à l'image transformée, la meilleure chose à faire serait d'utiliser la CGAffineTransform des méthodes qui prennent en une transformation existante. Il suffit d'envoyer la transformation existante. Par exemple:
Si vous avez VRAIMENT besoin de l'image telle qu'elle apparaît sans aucune transformation à tous, vous aurez à le dessiner sur une autre image. Ce n'est pas que dur, mais je ne le recommande pas que votre première solution. Ce code fonctionne dans le contexte d'une UIView catégorie pour un arbitraire de vue, y compris une UIImageView:
Swift 3, Swift 4 et Swift 5
Vous pouvez réinitialiser un CGAffineTransform avec ceci:
La version la plus courte est juste
.identity
comme suit:Fait quelque chose de similaire mais plus simple hier.
Trouver existants valeur de transformation. Ensuite, placez-le comme une compensation à la transformation de nouveau.
Voir les exemples:
C'est juste un conseil si vous voulez vivre avec l'ajout de transformer les valeurs à de nouvelles transformations pour faire le bon choix. Utiliser les mêmes méthodes pour l'échelle, etc.
Certains ont proposé d'utiliser CABasicAnimation avec additif propriété est définie sur OUI. Mais je ne pouvais pas obtenir que cela fonctionne.
Vous pouvez combiner plusieurs transformations. Par exemple:
Objectif C: