【问题标题】:Animating a UIButton's Text to Pinch In and Pinch Out Doesn't work动画 UIButton 的文本以捏合和捏出不起作用
【发布时间】:2017-05-10 07:32:32
【问题描述】:

所以我有一个UIButton,我想用动画更改它的文本。动画应该的工作方式是按钮的文本一直缩小到虚无,然后文本发生变化,然后又放大到原始大小。我仍然坚持试图让文本正确地缩小到虚无。

如果我使用此代码:

 UIView.animateKeyframes(withDuration: 0.6, delay: 0, options: .calculationModeLinear, animations: {
        //Zzzeeeewwwwwwwwww
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.3, animations: {
            self.submitButton.titleLabel?.transform = self.submitButton.titleLabel!.transform.scaledBy(x: 0.001, y: 0.001);
        })


        //Wwwwwweeeeeeyyyyyppp
        UIView.addKeyframe(withRelativeStartTime: 0.3, relativeDuration: 0.3, animations: {
               self.submitButton.titleLabel?.transform = self.submitButton.titleLabel!.transform.scaledBy(x: 100, y: 100);
        })
    }, completion: nil)

我只得到第一部分的动画,它正确地缩小了,但随后没有放大。它只是弹回原位,没有动画,因为它会重新长出来。

我尝试通过将 UIView 动画与持续时间(“老式方式”)链接起来,结果正好相反。第一部分立即发生,然后它会正确生长。这是代码:

  UIView.animate(withDuration: 0.3, animations: { 
        self.submitButton.titleLabel?.transform = self.submitButton.titleLabel!.transform.scaledBy(x: 0.01, y: 0.01);
    }) { _ in
        UIView.animate(withDuration: 0.3, animations: {
            self.submitButton.titleLabel?.transform = self.submitButton.titleLabel!.transform.scaledBy(x: 100, y: 100);
        }, completion: nil)
    }

我不知道是什么导致了这个问题。我已经坚持了几个小时。我什至还没有改变文本。这会导致一系列其他问题。

【问题讨论】:

    标签: ios swift swift3 uibutton uiviewanimation


    【解决方案1】:

    有几点需要注意:

    1。比例因子

    在第一个缩放动画中指定label.transform.scaledBy(x: 0.001, y: 0.001)
    但在第二个:label.transform.scaledBy(x: 100, y: 100)

    注意,你需要乘以1000才能得到1.0

    2。相对关键帧时间

    添加关键帧的工作方式是指定相对时间,该时间在[0.0 - 1.0] 范围内,因此您需要指定0.5 而不是0.5 才能获得正好一半的动画。考虑以下部分:

    UIView.animateKeyframes(withDuration: 0.6, delay: 0, options: .calculationModeLinear, animations: {
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.5, animations: {
            view.transform = view.transform.scaledBy(x: 0.001, y: 0.001)
        })
    
        UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: {
            view.transform = view.transform.scaledBy(x: 1000, y: 1000)
        })
    }, completion: nil)
    

    如果您从标签中抽象出来,这是您将获得的动画

    【讨论】:

    • 是的,这是一个错字。但它奏效了!!它是如此美丽!! (:谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2013-07-11
    • 2013-03-21
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多