Ios 为什么XCode 8和Swift 3中的图像大小不随动画变化?

Ios 为什么XCode 8和Swift 3中的图像大小不随动画变化?,ios,swift,animation,xcode8,image-scaling,Ios,Swift,Animation,Xcode8,Image Scaling,我正在iOS应用程序中创建一个动画,其中一个形状变大并旋转。我已经创建了这些图像,所以它们在我的照片编辑器中有不同的大小,但是当我设置它们的动画时,它们会保持第一个图像的大小。以下是我当前的测试代码: class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! var images = [UIImage]() var images2 = [UIImage]() images += [

我正在iOS应用程序中创建一个动画,其中一个形状变大并旋转。我已经创建了这些图像,所以它们在我的照片编辑器中有不同的大小,但是当我设置它们的动画时,它们会保持第一个图像的大小。以下是我当前的测试代码:

class ViewController: UIViewController {

@IBOutlet weak var imageView: UIImageView!
var images = [UIImage]()
var images2 = [UIImage]()


images += [#imageLiteral(resourceName: "circle1"), #imageLiteral(resourceName: "circle2"), #imageLiteral(resourceName: "circle3"), #imageLiteral(resourceName: "circle4")]
images2 += [#imageLiteral(resourceName: "circle4"), #imageLiteral(resourceName: "circle3"), #imageLiteral(resourceName: "circle2"), #imageLiteral(resourceName: "circle1")]

override func viewDidLoad() {
    super.viewDidLoad()


    imageView.animationImages = images
    imageView.animationDuration = 4.0

}

 @IBAction func startButton(_ sender: UIButton) {
    imageView.startAnimating()

    self.perform(#selector(ViewController.secondAnimation), with: nil, afterDelay: 0.9)
}

func secondAnimation() {
     imageView.stopAnimating()
     imageView.animationImages = images2
     imageView.animationDuration = 6.0
     imageView.animationRepeatCount = 1
     imageView.startAnimating()
 }
分辨率较低的图像会被拉伸并进行像素化,以匹配其他照片的大小。它们在用户界面上的相对大小都相同(
UIImageView
)。如果我颠倒动画的顺序,则正在设置动画的图像将再次设置为第一张照片的默认大小,这些图像的大小不同,因此我确定动画正在使用第一张图像的大小来设置显示器上的默认大小


为了尽可能地简化我的问题,动画显示了更改的分辨率,但没有显示每个图像的适当相对大小更改。为什么会发生这种情况?

如果您想使用类似gif的动画,那么您可以忘记iOS动画。在pic编辑中执行所有操作。 你需要做的是编辑图片,而不是代码。 使所有图片大小相同,对于“较小”的图片,使用清晰的颜色作为背景色

要在iOS中制作动画,以下是一些示例代码:

UIView.animate(withDuration: 0.5) { 
    var t = self.image.transform
    t = t.scaledBy(x: 1.3, y: 1.3)
    t = t.rotated(by: CGFloat(M_PI_4))
    self.image.transform = t;
}

好的,这肯定需要我做大量的工作,因为这样我就可以只使用一个图像,对吗?唯一的问题是我的动画有多个运动部分(我正在使用inkscape创建动画,并选择逐帧动画)。这将旋转并更改整个图像的大小。我只需要使用
startAnimate()
方法来允许显示图像大小的更改。我也得出了这个结论。我只是在缩小整体图像大小,认为这是修改几十张照片以提供缩放效果的最快方法。因为我的照片中有多个运动部件,所以pic edit是做我想做的事情的唯一方法吗?另外,你能再次发布代码以编程方式缩放和旋转图像吗?这很酷,我可以在另一个项目中使用它。谢谢@schulzey AFAIK,这是在视图中插入小“视频”的最简单方法。