J'ai deux boutons et un UIImageView dans ma vue principale. Un bouton essaie de faire pivoter l'UIImageView de 30 degrés, et l'autre met à jour le cadre de l'UIImageView.Étrange écrasement lors de la mise à jour du cadre UIImageView après rotation avec CGAffineTransform
Je ne m'attendrais pas à régler le cadre sur lui-même pour affecter quelque chose visuellement, mais il semble plutôt "écraser" l'image si elle est dans une rotation autre que l'orientation par défaut. Je suis tombé dessus, car je voulais mettre à jour le cadre de UIImageView afin de changer ses coordonnées x et y après la rotation. Par conséquent, le bouton de rotation semble fonctionner correctement tant que je n'appuie jamais sur le bouton de mise à jour de l'image. Si je pousse le second bouton alors que la vue est toujours tournée, elle écrase l'image dans un état que je ne comprends pas, ou sait comment l'annuler.
Vidéo du second bouton "squishing" l'image: https://streamable.com/ba7zd
Vidéo du second bouton seulement "squishing" alors que la rotation n'est pas l'orientation par défaut: https://streamable.com/vo3cd
Quelle est la raison pour laquelle cette est passe? This question et this question semblent tous deux capturer un scénario similaire, mais je ne sais pas comment appliquer l'une ou l'autre solution.
Dans le ViewController:
@IBOutlet weak var dog: UIImageView!
@IBAction func breakRotate(_ sender: UIButton) {
self.dog.frame = self.dog.frame // squishes if rotated
}
@IBAction func rotateDog(_ sender: UIButton) {
UIView.animate(withDuration: 1.5, delay: 0, options: [.allowUserInteraction], animations: {
self.dog!.transform = self.dog!.transform.rotated(by: CGFloat(0.523599)) // 30 degrees in radians
})
}
Image: