UIImageView的移动和跳转动画:Swift 4

时间:2018-12-08 14:27:31

标签: swift animation

我需要使图像跳动并随着动画向下移动。我正在使用精灵来显示跳转动画。但是,当我尝试将其与下移动画组合时,它不起作用。我正在尝试单击按钮。下面是我的代码。

我的动画在第二次单击时可以正常工作,但在第一次单击时,它会跳到当前位置,在第二次单击时,它会跳并向下移动。我试图使它跳跃并在第一次单击按钮时向下移动。

@IBAction func targetTouchAction(_ sender: Any) {
        let images: [UIImage] = (1...10).map { return UIImage(named: "Jump_\($0)")! }
        self.jackImage.frame.origin.y = self.jackImage.frame.origin.y + 100.0
        self.jackImage.animationImages = images
        self.jackImage.animationDuration = 2.0
        self.jackImage.animationRepeatCount = 1
        self.jackImage.startAnimating()
    }

我从最近的两个三小时开始尝试,但是没有运气。

1 个答案:

答案 0 :(得分:1)

您正在混合2种不同类型的动画。不要那样做使用animationImages的{​​{1}}属性与使用UIImageView动画方法(例如UIView

)是分开的

摆脱那个UIView.animate(duration:animations:)动画包装,只需为图像视图指定动画图像和其他设置即可:

UIView

请注意,每次触发动画时都无需将图像数组加载到图像视图中,但是它仍然可以正常工作。

我还没有使用SpriteKit,所以我不确定您的图像视图动画将如何与之交互。 (此外,您没有显示代码的那一部分。)

此外,请注意,您可以使用1行代码创建图像数组,而无需使用硬编码的文件名数组:

@IBAction func targetTouchAction(_ sender: Any) {
    let jumpImages = ["Jump_1","Jump_2","Jump_3","Jump_4","Jump_5","Jump_6","Jump_7","Jump_8","Jump_9","Jump_10"]
    var images = [UIImage]()
    for image in jumpImages{
        images.append(UIImage(named: image)!)
    }
    self.imageView.frame.origin.y = self.imageView.frame.origin.y + 100.0
    self.imageView.animationImages = images
    self.imageView.animationDuration = 2.0
    self.imageView.animationRepeatCount = 1
    self.imageView.startAnimating()
}

该代码创建了一个从1到10的序列。然后,它使用map语句通过将该值输入一个字符串并将该字符串用作调用{{ 1}}