【问题标题】:CABasicAnimation Does Not End SmoothlyCABasicAnimation 没有顺利结束
【发布时间】:2017-07-11 04:01:26
【问题描述】:

我有以下 UIView 扩展来执行蜂鸣动画。

虽然结局不流畅,但动画效果很好。对于最终的动画计数,UIView 转到 center.x - 40 并粗暴地返回到 center.x

我无法让它以一种顺利的方式结束。我怎样才能做到这一点?

extension UIView {
    func buzz() {
        let animation = CABasicAnimation(keyPath: "position")

        animation.duration = 0.4
        animation.repeatCount = 2
        animation.autoreverses = true
        animation.fromValue = NSValue(cgPoint: CGPoint(x: self.center.x - 40.0, y: self.center.y))
        animation.toValue = NSValue(cgPoint: CGPoint(x: self.center.x + 40.0, y: self.center.y))
        animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)

        layer.add(animation, forKey: "position")
    }
}

【问题讨论】:

    标签: ios swift uiview core-animation


    【解决方案1】:

    在制作动画之前,您需要将图层的位置设置为动画完成后的位置。这是因为动画在不同的层上单独运行,一旦完成就会消失。

    【讨论】:

    • 知道了,但请您提供一个示例代码来扩展它。
    • 在左大括号之后或让动画之后的空白行中添加这一行...:layer.position = CGPoint(x: self.center.x + 40.0, y: self.center.y )
    • 那行代码使它只向一个方向移动(嗡嗡声效果消失了),一旦完成,视图超出范围 40。
    • 根据您刚刚添加的动画图片,在我看来您正在制作不止一个动画。我认为这个是固定的,但你可能有另一个(可能就在这个被调用之前......)这可能吗?
    • 右上角闪烁的东西是什么?
    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多