2016-08-15 340 views
0

我有一个按钮,我已经用一个图标取代,当图标是clicke时,我希望它放大和缩小可以说5秒。我怎样才能做到这一点?我为按钮制作了一组5幅不同尺寸的图像,我可以通过它们循环或者有其他方法吗?动画UIButton放大和缩小点击

@IBAction func myButton(sender: UIButton){ 
    //animation that zoom the button icon in and out 
} 

编辑:林使用的Xcode 6.4

+0

看一看http://stackoverflow.com/questions/14184619/how-can-i-animate-zoom-in-zoom-out-on-ios-using-objective-c – Yannick

回答

2

这将放大和缩小按钮,而无需使用额外的图像:

let timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "stopButtonAnimation", userInfo: nil, repeats: false) 
let options = UIViewAnimationOptions.Autoreverse | UIViewAnimationOptions.Repeat | UIViewAnimationOptions.CurveEaseInOut 
UIView.animateWithDuration(0.25, delay: 0, options: options, 
animations: { 
    self.button.transform = CGAffineTransformMakeScale(0.5, 0.5) 
}, completion:nil) 

.....

func stopButtonAnimation() { 
    button.layer.removeAllAnimations; 
} 
+0

我是否把这个放在我的IBAction函数中? –

+0

@TheDude是的,你应该 –

+0

这太棒了!是否有可能使这个循环开启一段时间? –

6

要展示另一种方法,我将展示一种使用图层动画的方法。 更多的相关信息吧here

将此代码添加到您的功能(提示是代码中的注释):

// specify the property you want to animate 
let zoomInAndOut = CABasicAnimation(keyPath: "transform.scale") 
// starting from the initial value 1.0 
zoomInAndOut.fromValue = 1.0 
// to scale down you set toValue to 0.5 
zoomInAndOut.toValue = 0.5 
// the duration for the animation is set to 1 second 
zoomInAndOut.duration = 1.0 
// how many times you want to repeat the animation 
zoomInAndOut.repeatCount = 5 
// to make the one animation(zooming in from 1.0 to 0.5) reverse to two animations(zooming back from 0.5 to 1.0) 
zoomInAndOut.autoreverses = true 
// because the animation consists of 2 steps, caused by autoreverses, you set the speed to 2.0, so that the total duration until the animation stops is 5 seconds 
zoomInAndOut.speed = 2.0 
// add the animation to your button 
button.layer.addAnimation(zoomInAndOut, forKey: nil) 

结果:

enter image description here

+1

更好的方法! –