我们可以运用UIView的动画(Animation)来实现一些UI的动画效果。这对于用户体验和引导用户使用有很好的作用。
基本的动画变化:
1.位移:通过改变view.center的值来实现
self.blueSquare.center.x = self.view.bounds.width - self.blueSquare.center.x
2.放大缩小:通过view.transform
self.blueSquare.transform = CGAffineTransformMakeScale(2.0,2.0)
3.旋转:通过view.transform
self.wheel.transform = CGAffineTransformRotate(self.wheel.transform,CGFloat(M_PI))
4.透明度:通过view.alpha
self.blueSquare.alpha = 0.2
5.颜色:通过view.backgroundcolor
要让动画生效,需要通过UIView.animateWithDuration 系列函数实现
UIView.animateWithDuration(<#T##duration: NSTimeInterval##NSTimeInterval#>, animations: <#T##() -> Void#>)
这是该函数的基本形态,duration表示动画执行的时间,animations里就是需要播放的动画。
熟悉Cocos2d的应该能很快理解,并使用这些函数。因为和Cocos2d的动画及其相似。
当然UIView.animateWithDuration函数还有其他形态,比如,我们可以传入一个delay,让动画延时执行。或者,传入Options,选择一些动画的参数,比如repeat,reverse,easeInOut,easeIn等等。
UIView.animateWithDuration(1, delay: 1, options: [], animations: {
self.greenSquare.center.x =self.view.bounds.width -self.greenSquare.center.x
self.greenSquare.center.y =self.view.bounds.height -self.greenSquare.center.y
}, completion: nil)
iOS7.0以后还引入了spring(弹簧效果),需要传人damping,弹簧的阻尼和velocity,初识速度。
UIView.animateWithDuration(5, delay: 0, usingSpringWithDamping: 0.1, initialSpringVelocity: 1, options: [], animations: {
self.greenSquare.center.x =self.view.bounds.width -self.greenSquare.center.x
}, completion: nil)
总结:使用这些动画效果的组合几乎可以完成大部分需求,如果是简单少量的动画效果完全可以用这些接口实现。但是值得注意的是,这样的效率并不是最好的。如果想即使用大量的动画效果,又想追求效率的话可以使用Facebook pop这个开源库或者Core Animation