Swift - 动画 UIImageView 图像

Posted

技术标签:

【中文标题】Swift - 动画 UIImageView 图像【英文标题】:Swift - animating UIImageView image 【发布时间】:2017-05-08 05:54:15 【问题描述】:

我遇到的一个快速问题是为我当前的应用程序设置动画移动背景图像。本质上,我想让我当前静止的背景图像在我的视图中从左到右无休止地滚动;但我正在努力将它们拼凑在一起。从各种其他来源,我组成了这个目前不起作用的功能,我真的无法弄清楚如何或为什么。

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)
        
    

非常感谢任何帮助/协助!

【问题讨论】:

你需要什么样的动画?解释清楚 对不起,不够清晰!我希望我的动画是这样的; cdn.dribbble.com/users/279765/screenshots/1335470/… 【参考方案1】:

您不需要在animateWithDuration 中使用CAffineTranform,您可以简单地定义新中心,如:

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: oldCenter.x - 100, size: oldCenter.y) UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: background.center = newCenter ) (success: Bool) in print("Done Moving image") 但随后我得到了一个二进制文件运算符错误为“-”不能应用于类型“Int”或“CGFloat” 对不起,它是 CGPoint 而不是 CGRect。立即尝试使用 CGPoint 动画肯定有进展。它慢慢开始向左滑动,然后在图像中大约 1/6 处停止。最重要的是,它似乎没有从图像的右侧重新出现;所以我要实现这个功能吗? 您需要在此处通过反复试验来调整值。另外,您可以摆脱线性动画的延迟和选项。还将持续时间减少到 1 或 2 是的,刚刚调整了设置;图像成功滑出屏幕,只是没有重新出现

以上是关于Swift - 动画 UIImageView 图像的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 动画 ImageView

Swift - 动画动态创建 UIImageView

在执行代码之前等待 Swift 动画完成

Swift3 淡入/淡出或平滑过渡 UIImageView animationImages

UIView Swift 倾斜动画

Swift3 中的 UIView 动画