【问题标题】:Springy animation on scaling up UIImageView缩放 UIImageView 的弹性动画
【发布时间】:2017-04-17 16:35:23
【问题描述】:

我有一个 UIImageView,里面有一个圆形 png。我正在尝试使用 0 x 0 对其进行初始化并轻松放大,因此它看起来像气泡效果。

viewDidLaod() 中,我使用 CGSize 对其进行了初始化,但我不知道如何应用动画,因此它不仅以相同的速度放大,而且看起来很有弹性(我的意思是,如果它会出现到 100 x 100,它就像“boing”效果一样,它也通过了 100 x 100,但是当动画稳定时,它以 100x100 结束)。

logoCircularBg.frame.size = CGSize(width: 0, height: 0)
logoCircularBg.hidden = false

类似这样的东西,但从 0x0 开始并在 100x100 停止,并且使用 UIImageView。

【问题讨论】:

标签: ios swift animation


【解决方案1】:

对于“有弹性”的动画,请调用 UIView 的 animate(withDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)。较低的damping 值会在动画结束时增加振荡,就像在您的截屏视频中一样。

(当您制作此动画时,我建议您为视图的缩放变换设置动画,而不是它的框架。)

【讨论】:

  • 如果你能给出一些代码 sn-p 来说明你对比例变换的含义,我会非常高兴。我有点困惑。因为我不能用:logoCircularBg.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
  • 为什么不能用?
  • '无法使用类型为'(scaleX: Double, y: Double)'的参数列表调用类型'CGAffineTransform'的初始化程序''
  • 那么也许你没有使用 Swift 3,嗯?
  • 我成功了。我尝试使用 animateWithDuration(1.5, delay: 1.0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.3...CGAffineTransformMakeScale(1, 1) 但我无法接近。它要么变得如此缓慢,要么变得如此之快。而且它的行为不像 boing,它会反弹一次并立即获得 100x100。我做错了什么?
【解决方案2】:

这是一个代码示例,我用它为 UIImageView 设置了一个像您发布的那样具有弹性/弹跳动画的动画。在开始动画之前,我将 imageView 缩小到其大小的 1%。然后动画将 imageView 缩放回 100%。

     self.myImageView.transform = CGAffineTransform(scaleX: 0.01, y: 0.01)
     UIView.animate(
        withDuration: 1.2,
        delay: 0.0,
        usingSpringWithDamping: 0.2,
        initialSpringVelocity: 0.2,
        options: .curveEaseOut,
        animations: {
            self.myImageView.transform = CGAffineTransform(scaleX: 1, y: 1)
        },
        completion: nil)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    相关资源
    最近更新 更多