Swift - UIImageView图像动画

3

我目前在应用程序设置中遇到了一个问题,关于动画移动背景图片。基本上,我想让我的静止背景图片无限地从左向右滚动,但我很难把所有东西都拼凑在一起。通过各种其他来源,我编写了这个目前不起作用的函数,但我真的想不出如何或为什么会这样。

func animate(_ image: UIImageView) {
        UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: {
            image.transform = CGAffineTransform(translationX: -100, y: 0)
        }) { (success: Bool) in
            image.transform = CGAffineTransform.identity
            self.animate(image)
        }
    }

非常感谢您的帮助和协助!


你需要什么类型的动画?请清楚地解释。 - Jigar Tarsariya
抱歉表述不够清晰!我希望我的动画能够类似于这个链接中的内容:https://cdn.dribbble.com/users/279765/screenshots/1335470/marioscroll_real_real.gif - Jordy
1个回答

5

您不需要在animateWithDuration函数内部使用CAffineTransform,您可以轻松地定义新的中心位置,如下所示:

let oldCenter = image.center
let newCenter = CGPoint(x: oldCenter.x - 100, y: oldCenter.y)

UIView.animate(withDuration: 1, delay: 0, options: .curveLinear, animations: {
  image.center = newCenter
}) { (success: Bool) in
  print("Done moving image")
  }

希望这可以帮到你。

尝试实施您的建议后,我建议将代码调整如下: let oldCenter = background.center let newCenter = CGRect(origin: CGPoint(x: oldCenter.x - 100, y: oldCenter.y), size: oldCenter.size)UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: { background.center = newCenter.origin }) { (success: Bool) in print("完成图片移动") }但是,我遇到了一个二进制运算符错误,因为“-”不能应用于类型“Int”或“CGFloat”。 - Jordy
抱歉,我的错,应该是 CGPoint 而不是 CGRect。现在请尝试使用 CGPoint。 - Shubham Naik
你需要通过试错来调整这里的值。此外,您可以去掉延迟和线性动画选项。还要将持续时间减少到1或2。 - Shubham Naik
是的,我只是调整了一下设置;图像成功地滑出屏幕,但根本没有重新出现。 - Jordy
实现不允许UIImageView重新出现,使动画看起来无限。我该如何实现这一点(即在其部分离开屏幕之前使其重新出现)? - Jordy
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接