我一直在尝试实现一种动画,让用户注意标签中的值的变化。我想通过快速增加和减少标签的大小来做到这一点(不能想出更好的方式来描述它),并且我已经朝这个方向取得了一些进展。问题在于,动画的大小随着我想要的增加而增加;它的大小减少的方式并不顺畅。此外,动画完成后,字体大小不会返回原始大小。
这就是我所拥有的:
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()
}
我可以做些什么改变让它按照我的意图去做?
答案 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?