【问题标题】:Make smooth expand animation in Swift when button held按住按钮时在 Swift 中制作平滑的展开动画
【发布时间】:2021-06-20 08:15:34
【问题描述】:

我正在使用 Wobble Bubble Button 在我的应用程序中制作一些类似游戏中心的气泡。不过,点击气泡时没有动画。我正在尝试的动画是让气泡在按住时展开,并在释放时缩小。我试过这段代码:

    @IBAction func button3down(_ sender: UIButton) {
        UIView.animate(withDuration: 0.6,
                       animations: {
                        self.button3.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
        },
                       completion: { _ in
                        UIView.animate(withDuration: 0.6) {
                            self.button3.transform = CGAffineTransform.identity
                        }
        })
    }

它显示了一个粗略的动画,与我想要的相反。

https://i.imgur.com/puMGR1J.gif

如何获取气泡的当前大小并在按住时将其平滑展开?

【问题讨论】:

  • 什么是“摆动气泡按钮”?是第三方库吗?快速谷歌搜索没有找到任何东西。

标签: swift xcode animation


【解决方案1】:

您的代码存在一些问题。

首先,您的动画将比例设置为0.6,这会导致按钮缩小而不是展开。使用大于 1 的比例值使其扩展。尝试 1.2 作为新的 scaleX 和 scaleY 值。向上或向下调整该值以适应口味,但如果您希望按钮增长,请保持新的比例值 > 1。

其次,您的代码将按钮设置为新比例 0.6 秒,然后立即将其恢复为之前的大小。您说只要用户按住它,您就希望它增长并保持较大。

我会说你应该实现 handleTouchDown IBAction 连接一个 touch down inside 事件,以及一个单独的 handleTouchUp 事件,你将绑定到 touchUpInside。 handleTouchDown IBAction 会将按钮设置得更大,handleTouchUp 方法会将其设置回原来的大小。

(顺便说一句,0.6 秒对于这种动画来说有点长。它会感觉迟缓。我建议尝试 0.2 - 0.3 秒范围内的持续时间。)你可能想要使用 ease-在,缓出动画时间。为此,您需要使用带有选项参数的较长形式的 UIView 动画:animate(withDuration:delay:options:animations:completion:)。)

【讨论】:

    【解决方案2】:

    大招。

    以及来自@DuncanC 的无价信息。

    在制作弹跳动画时有一个技巧。

    事实上,使项目大小加倍

    当您正常显示时,始终将其缩小到 0.50。

    当您进行反弹时,将其从 0.5 增加到 1 并返回到 0.5

    而不是 1 比 2 比 1。

    否则展开后会看起来像废话。

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 2020-09-23
      • 1970-01-01
      相关资源
      最近更新 更多