1.前言
转载请注明出处
http://blog.csdn.net/wangguoyang429883793/article/details/50428849
以平移为例子,总结了一下动画的实现方式。
2.实战
准备工作:
我们添加了一个红色的uiview圆和一个蓝色的calyaer圆,给屏幕添加了点击事件。
enum AniType: Int {
case ViewCenterNone
case ViewCenterAni
case Block
case Spring
case LayerNone
case CABasic
case Display
case Snap
}
var currentType:AniType? //当前动画的类型,因为我们要用多种方式实现
var circleView:UIView? //UIView 红色的圆 用于动画
var layer:CALayer? // CALayer 蓝色的圆 用于动画
var dynamicAnimator:UIDynamicAnimator?
override func viewDidLoad() {
super.viewDidLoad()
currentType = .Snap
dynamicAnimator = UIDynamicAnimator()
addView()
addLayer()
addOptionsBtn()
addTapGesture()
}
//添加 UIView 的圆
func addView(){
circleView = UIView(frame: CGRectMake(0,0,50,50))
self.view.addSubview(circleView!)
circleView!.backgroundColor = UIColor.redColor()
circleView?.layer.cornerRadius = 25
circleView?.center = CGPoint(x: 30,y: 60)
}
//添加 Layer 的圆
func addLayer(){
layer = CALayer()
layer?.bounds = CGRectMake(0, 0, 50, 50)
layer?.cornerRadius = 25
layer?.position = CGPoint(x: 30,y: 30)
layer?.backgroundColor = UIColor.blueColor().CGColor
self.view.layer.addSublayer(layer!)
}
//给主屏添加点击事件
func addTapGesture(){
let tap = UITapGestureRecognizer(target: self, action: "onTap:")
tap.numberOfTapsRequired = 1
tap.numberOfTouchesRequired = 1