Ios 在不失真的情况下旋转图像视图并设置其动画?

Ios 在不失真的情况下旋转图像视图并设置其动画?,ios,swift,animation,Ios,Swift,Animation,我目前正在尝试将一个图像旋转13度左右,然后将图像“划”到屏幕左侧。它的工作方式不是我想要的——一旦图像旋转,我尝试设置任何运动的动画,它就会扭曲图像,将其拉伸到一个像素薄 如何在不失真的情况下保持图像的宽度和高度?我尝试了布局约束,并通过编程设置frame.size(宽度和高度),但也没有成功。代码如下: @IBOutlet weak var astro: UIImageView! UIView.animate(withDuration: 1.5, animations: {

我目前正在尝试将一个图像旋转13度左右,然后将图像“划”到屏幕左侧。它的工作方式不是我想要的——一旦图像旋转,我尝试设置任何运动的动画,它就会扭曲图像,将其拉伸到一个像素薄

如何在不失真的情况下保持图像的宽度和高度?我尝试了布局约束,并通过编程设置frame.size(宽度和高度),但也没有成功。代码如下:

 @IBOutlet weak var astro: UIImageView!
 UIView.animate(withDuration: 1.5, animations: {
                    self.astro.transform = CGAffineTransform(rotationAngle: -13 * 3.14/180.0)
                    self.view.layoutIfNeeded()
                }, completion: { (success) in
                    if(success == true){
                        UIView.animate(withDuration: 1.5, animations: {
                            self.astro.frame.origin.x = -100
                            self.astro.frame.origin.y = 0
                            self.astro.frame.size.height = 119
                            self.astro.frame.size.width = 108
                        })
                    }
您需要“重置”变换,更改帧,然后重新应用变换:

    let rot = CGAffineTransform(rotationAngle: -13 *  3.14/180.0)

    UIView.animate(withDuration: 1.5, animations: {
        self.astro.transform = rot
    }, completion: { (success) in
        if success == true {
            UIView.animate(withDuration: 1.5, animations: {
                self.astro.transform = .identity
                self.astro.frame.origin.x = -100.0
                self.astro.transform = rot
            })
        }
    })

旋转和平移与图像失真无关,如果您尝试缩放它,可能会发生这种情况!!!代码本身没有任何东西可以缩放图像。所以我剩下的代码几乎都是默认模式。。。那么,我该如何关闭缩放功能呢?旋转时它会缩放吗?宽度和高度值是否与完成时一样是静态的?图像旋转时不会扭曲。在旋转后发生的每个动画期间都会发生扭曲。我在完成块中设置的宽度和高度似乎没有任何效果,这是我试图防止图像失真的徒劳尝试。在故事板中的宽度和高度值与完成相同????