var circleShapeLayer1 = CAShapeLayer()
var circleShapeLayer2 = CAShapeLayer()
var circleShapeLayer3 = CAShapeLayer()
设置界面
*/
func settingUI() {
let shapeWidth:CGFloat = 10
let bezierCGPath = UIBezierPath(ovalInRect: CGRect(x: 0, y: 0, width: shapeWidth, height: shapeWidth)).CGPath
let fillCGColor = UIColor(red: 200/255.0, green: 200/255.0, blue: 200/255.0, alpha: 1.0).CGColor
let screenWidth = CGRectGetWidth(UIScreen.mainScreen().bounds)
let marginLeft = CGFloat((screenWidth - 70)/2.0)
circleShapeLayer1.path = bezierCGPath
circleShapeLayer1.fillColor = fillCGColor
circleShapeLayer1.frame = CGRect(x: marginLeft, y: 100, width: shapeWidth, height: shapeWidth)
view.layer.addSublayer(circleShapeLayer1)
circleShapeLayer2.path = bezierCGPath
circleShapeLayer2.fillColor = fillCGColor
circleShapeLayer2.frame = CGRect(x: marginLeft + 30, y: 100, width: shapeWidth, height: shapeWidth)
view.layer.addSublayer(circleShapeLayer2)
circleShapeLayer3.path = bezierCGPath
circleShapeLayer3.fillColor = fillCGColor
circleShapeLayer3.frame = CGRect(x: marginLeft + 60, y: 100, width: shapeWidth, height: shapeWidth)
view.layer.addSublayer(circleShapeLayer3)
}
@IBAction func startAnimationButtonClicked(sender: AnyObject) {
addLayerAnimation(circleShapeLayer1,layerTagStr: "1")
}
添加图层动画
:param: layer 图层
:param: layerTagStr 图层 Tag
*/
func addLayerAnimation(layer: CAShapeLayer,layerTagStr: String) {
let scaleKeyframeAnimation = CAKeyframeAnimation(keyPath: "transform")
let t1 = CATransform3DMakeScale(1.0, 1.0, 0)
let t2 = CATransform3DMakeScale(1.5, 1.5, 0)
let t3 = CATransform3DMakeScale(1.0, 1.0, 0)
scaleKeyframeAnimation.values = [NSValue(CATransform3D:t1),NSValue(CATransform3D:t2),NSValue(CATransform3D:t3)]
scaleKeyframeAnimation.keyTimes = [0, 0.5, 1]
let normalCGColor = UIColor(red: 200/255.0, green: 200/255.0, blue: 200/255.0, alpha: 1.0).CGColor
let highlightedColor = UIColor(red: 60/255.0, green: 60/255.0, blue: 60/255.0, alpha: 1.0).CGColor
let colorKeyframeAnimation = CAKeyframeAnimation(keyPath: "fillColor")
colorKeyframeAnimation.values = [normalCGColor,highlightedColor,normalCGColor]
colorKeyframeAnimation.keyTimes = [0, 0.5, 1]
let groupAnimation = CAAnimationGroup()
groupAnimation.duration = CFTimeInterval(0.35)
groupAnimation.animations = [scaleKeyframeAnimation,colorKeyframeAnimation]
groupAnimation.removedOnCompletion = true
groupAnimation.setValue(layerTagStr, forKey: "LayerTag")
groupAnimation.delegate = self
layer.addAnimation(groupAnimation, forKey: "scaleKeyframeAnimation")
}
override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
let layerTagStr = anim.valueForKey("LayerTag") as! String
if layerTagStr == "1"{
addLayerAnimation(circleShapeLayer2,layerTagStr: "2")
}else if layerTagStr == "2"{
addLayerAnimation(circleShapeLayer3,layerTagStr: "3")
}else if layerTagStr == "3"{
addLayerAnimation(circleShapeLayer1,layerTagStr: "1")
}
}