动画标签以增加和减小尺寸

时间:2014-08-03 01:10:58

标签: swift

我一直在尝试实现一种动画,让用户注意标签中的值的变化。我想通过快速增加和减少标签的大小来做到这一点(不能想出更好的方式来描述它),并且我已经朝这个方向取得了一些进展。问题在于,动画的大小随着我想要的增加而增加;它的大小减少的方式并不顺畅。此外,动画完成后,字体大小不会返回原始大小。

这就是我所拥有的:

func bloat() {
    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDelegate(self)
    UIView.setAnimationDelay(0.6)
    UIView.setAnimationDuration(0.3)
    UIView.setAnimationRepeatCount(4)
    UIView.setAnimationCurve(UIViewAnimationCurve.EaseInOut)
    currentBudgetDisplay.transform = CGAffineTransformMakeScale(0.9, 0.9)
    UIView.commitAnimations()
}

我可以做些什么改变让它按照我的意图去做?

2 个答案:

答案 0 :(得分:7)

使用核心动画的要求很简单,试试这个

func bloat() {
    var animation = CABasicAnimation(keyPath: "transform.scale")
    animation.toValue = NSNumber(float: 0.9)
    animation.duration = 0.3
    animation.repeatCount = 4.0
    animation.autoreverses = true
    currentBudgetDisplay.layer.addAnimation(animation, forKey: nil)
}

答案 1 :(得分:1)

在iOS 6和7中,在自动布局下应用于UIViews的转换UIView动画不起作用(因为自动布局会阻止它们)。但是,这在iOS 8中已得到修复。

如果您坚持支持iOS 7,则有许多变通方法,包括使用CABasicAnimation(图层动画)而不是UIView动画。另见我的论文:How do I adjust the anchor point of a CALayer, when Auto Layout is being used?