IOS-swift 动画03 CAAnimationGroup
来源:互联网 发布:软件行业协会好吗 编辑:程序博客网 时间:2024/05/30 02:51
CAAnimationGroup 动画组
CAAnimationGroup 用于一组动画
直接上代码
//// ViewController.swift// AnimationGroup//// Created by 鲍东升 on 16/5/20.// Copyright © 2016年 鲍东升. All rights reserved.//import UIKitclass ViewController: UIViewController { //MARK: - PropertyList var cardView1 : UIView? var cardView2 : UIView? private lazy var show2FrontAnimationGroup:CAAnimationGroup={ var val=CAAnimationGroup() val.animations = [] return val }() private lazy var hide2BackAnimationGroup:CAAnimationGroup={ var val=CAAnimationGroup() val.animations = [] return val }() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. prepareView(view) } func prepareView(view:UIView) -> UIView { cardView1 = UIView(frame: CGRect(x: 140, y: 200, width: 120, height: 120)) cardView1?.backgroundColor = UIColor.cyanColor() view.addSubview(cardView1!) cardView2 = UIView(frame: CGRect(x: 140, y: 200, width: 120, height: 120)) cardView2?.backgroundColor = UIColor.orangeColor() view.addSubview(cardView2!) return view } func addZpositonAnimation(group:CAAnimationGroup,reverseFlag:Bool) -> CAAnimationGroup { let zPositionAnimation:CABasicAnimation = CABasicAnimation(keyPath: "zPosition") if !reverseFlag { zPositionAnimation.fromValue = -1 zPositionAnimation.toValue = 1 }else{ zPositionAnimation.fromValue = 1 zPositionAnimation.toValue = -2 } zPositionAnimation.duration = 1.2 zPositionAnimation.fillMode = kCAFillModeForwards zPositionAnimation.removedOnCompletion = false group.animations!.append(zPositionAnimation) return group } func addPostionAnimation(group:CAAnimationGroup,reverseFlag:Bool) -> CAAnimationGroup { let positonAnimation:CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "position") if !reverseFlag { positonAnimation.values = [ NSValue(CGPoint:CGPointZero), NSValue(CGPoint:CGPointMake(80, 0)), NSValue(CGPoint:CGPointZero) ] }else{ positonAnimation.values = [ NSValue(CGPoint:CGPointZero), NSValue(CGPoint:CGPointMake(-80, 0)), NSValue(CGPoint:CGPointZero) ] } positonAnimation.timingFunctions = [ CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut), CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) ] positonAnimation.duration = 1.5 positonAnimation.additive = true// positonAnimation.removedOnCompletion = tr// positonAnimation.fillMode = kCAFillModeRemoved group.animations?.append(positonAnimation) return group } func addRotaionAnimation(group:CAAnimationGroup,reverseFlag:Bool) -> CAAnimationGroup { let rotationAnimation:CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "transform.rotation") if !reverseFlag { rotationAnimation.values = [0 , 0.15 ,0] }else{ rotationAnimation.values = [0 , -0.15 ,0] } rotationAnimation.duration = 1.5 rotationAnimation.timingFunctions = [ CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut), CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) ] group.animations?.append(rotationAnimation) return group } func toolAddAnimationGroup2View(view:UIView,key:String,animationGroup:CAAnimationGroup,procFunc:((CAAnimationGroup)->(CAAnimationGroup))) -> UIView { view.layer.addAnimation(procFunc(animationGroup), forKey: key) return view } func configShow2FrontAnimationGroup(animationGroup:CAAnimationGroup) -> CAAnimationGroup { animationGroup.animations?.removeAll() addPostionAnimation(animationGroup, reverseFlag: false) addZpositonAnimation(animationGroup, reverseFlag: false) addRotaionAnimation(animationGroup, reverseFlag: false) animationGroup.duration = 1.5 return animationGroup } func configHide2BackAnimatinoGroup(animationGroup:CAAnimationGroup) -> CAAnimationGroup { animationGroup.animations?.removeAll() addPostionAnimation(animationGroup, reverseFlag: true) addZpositonAnimation(animationGroup, reverseFlag: true) addRotaionAnimation(animationGroup, reverseFlag: true) animationGroup.duration = 1.5 animationGroup.removedOnCompletion = true animationGroup.fillMode = kCAFillModeForwards return animationGroup } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { cardView1?.layer.zPosition = -1 toolAddAnimationGroup2View(cardView1!, key: "showAnimationGroup", animationGroup: show2FrontAnimationGroup, procFunc: configShow2FrontAnimationGroup) toolAddAnimationGroup2View(cardView2!, key: "hideAnimationGroup", animationGroup: hide2BackAnimationGroup, procFunc: configHide2BackAnimatinoGroup) cardView1?.layer.zPosition = 1 view.userInteractionEnabled = false //2秒后复位 let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC))) dispatch_after(delayTime, dispatch_get_main_queue()) { self.cardView1?.layer.zPosition = -1 self.view.userInteractionEnabled = true } }}
1 0
- IOS-swift 动画03 CAAnimationGroup
- <iOS>动画组CAAnimationGroup
- iOS开发-组合动画CAAnimationGroup
- iOS 核心动画之CAAnimationGroup
- 【iOS开发-动画】动画组CAAnimationGroup
- iOS开发之 动画组CAAnimationGroup
- 九 iOS 之CAAnimationGroup(动画组)
- 动画CAAnimationGroup
- iOS CAAnimationGroup
- iOS - UI之核心动画CAAnimationGroup以及其他
- iOS CABasicAnimation CAAnimationGroup 对颜色做连续渐变动画
- 组合动画CAAnimationGroup
- 组合动画CAAnimationGroup
- 组动画 CAAnimationGroup
- CAAnimationGroup 组动画
- 组动画 CAAnimationGroup
- CAAnimationGroup-核心动画组
- XMG CAAnimationGroup动画组
- L1-010. 比较大小(C++)
- 什么是url地址
- 会表演的"汤姆猫" —— 让 APP 动起来
- 织梦dedecms如何去除版权中的Power by DedeCms
- 一种提高Android应用进程存活率新方法
- IOS-swift 动画03 CAAnimationGroup
- redis环境配置
- 观察者模式巩固学习
- 安装httpd
- <<Effective C++>>读书笔记1: 让自己习惯C++
- 经纬度显示、和setnull的用法
- photoView 点击事件 和预览功能
- linux下安装配置svn独立服务器
- Ubuntu12.04上交叉编译python-3.2.2详细过程