UIView动画个人笔记,代码简单,不过多赘述。
1.定义三个View

@IBOutlet weak var mFirstView: UIView!
@IBOutlet weak var mSecondView: UIView!//var mOriginFrame: CGRect! //记录view的初始位置 var mFirstSubView: UIView!

2.初始化相关信息

override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.self.mOriginFrame = self.mFirstView.frameself.mFirstSubView = UIView(frame: CGRect(x: 5, y: 5, width: 50, height: 50)) self.mFirstSubView.backgroundColor = UIColor.blackColor() self.mFirstView.addSubview(self.mFirstSubView) }

3.实现相关动画

//简单Y轴平移动画
func basicAnimate() {UIView.animateWithDuration(1) { () -> Void inself.mFirstView.frame.origin.y += 100 } } //可配置option信息动画 func optionAnimate() { UIView.animateWithDuration(3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in self.mFirstView.frame.origin.x += 100 //Nest重写父层option属性 UIView.animateWithDuration(3, delay: 0, options: [UIViewAnimationOptions.OverrideInheritedOptions, UIViewAnimationOptions.OverrideInheritedCurve, UIViewAnimationOptions.CurveEaseOut], animations: { () -> Void in self.mSecondView.frame.origin.x += 100 }, completion: { (finished:Bool) -> Void in }) }) { (finished: Bool) -> Void in } } //试图动画操作子视图 func operateSubview() { UIView.transitionWithView(self.mFirstView, duration: 1, options: [UIViewAnimationOptions.TransitionCrossDissolve, UIViewAnimationOptions.AllowAnimatedContent], animations: { () -> Void in self.mFirstSubView.frame.origin.x += 150 }) { (finished: Bool) -> Void in } } //替换视图动画 func replaceView() { let view = UIView(frame: CGRect(x: 21, y: 150, width: 240, height: 60)) view.backgroundColor = UIColor.magentaColor() UIView.transitionFromView(self.mFirstView, toView: view, duration: 1, options: UIViewAnimationOptions.TransitionCurlUp) { (finished:Bool) -> Void in } } //----------------------核心动画---------------------- /** *显式动画 */ func newBasicAnimate() { //创建一个imageview视图 let imgView = UIImageView(image: UIImage(named: "img")) imgView.frame = CGRect(x: 150, y: 200, width: 100, height: 100) self.view.addSubview(imgView) //1.选定角色 let layer = imgView.layer layer.cornerRadius = 5.0 //2.写剧本 let scaleAnimate = CABasicAnimation(keyPath: "transform.scale") scaleAnimate.fromValue = 1.0 scaleAnimate.toValue = 1.5 scaleAnimate.autoreverses = true scaleAnimate.repeatCount = MAXFLOAT scaleAnimate.duration = 1.0 //第二个剧本 let opaqueAnimate = CABasicAnimation(keyPath: "opacity") opaqueAnimate.fromValue = 0.1 opaqueAnimate.toValue = 1 opaqueAnimate.autoreverses = true opaqueAnimate.repeatCount = MAXFLOAT opaqueAnimate.duration = 1.0 //把剧本交给演员开始动画 layer.addAnimation(scaleAnimate, forKey: "scaleAnimate") layer.addAnimation(opaqueAnimate, forKey: "opacityAnimate") } /** *关键帧动画 */ func newKeyFrameAniamte() { //创建一个imageview视图 let imgView = UIImageView(image: UIImage(named: "img")) imgView.frame = CGRect(x: 200, y: 200, width: 40, height: 40) self.view.addSubview(imgView) //1.选定角色 let layer = imgView.layer layer.cornerRadius = 5.0 //2.写剧本 let keyAnimate = CAKeyframeAnimation(keyPath: "position") //3.设定关键帧 let value0 = NSValue(CGPoint: layer.position) let value1 = NSValue(CGPoint: CGPointMake(layer.position.x, layer.position.y + 200)) let value2 = NSValue(CGPoint: CGPointMake(layer.position.x - 150, layer.position.y + 200)) let value3 = NSValue(CGPoint: CGPointMake(layer.position.x - 150, layer.position.y)) let value4 = NSValue(CGPoint: layer.position) //速度曲线 //let tf0 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) //let tf1 = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) //let tf2 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn) //let tf3 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) //keyAnimate.timingFunctions = [tf0, tf1, tf2, tf3] //每段执行的时间 //keyAnimate.keyTimes = [0.0, 0.5, 0.6, 0.7, 1] keyAnimate.values = [value0, value1, value2, value3, value4] keyAnimate.autoreverses = false keyAnimate.repeatCount = MAXFLOAT keyAnimate.duration = 6.0 layer.addAnimation(keyAnimate, forKey: "keyAnimate") }

附:CABasicAnimation的KeyPath
透明度为:opacity
其余如下:

转载于:https://www.cnblogs.com/Free-Thinker/p/6375390.html

Swift之动画总结相关推荐

  1. Swift 弹性动画教程

    原文:How To Create an Elastic Animation with Swift 作者:Daniel Tavares 译者:kmyhy 每个优雅的 iOS app 都会有一些定制的元素 ...

  2. swift 常用动画

    一.位置变化动画 UIView.animateWithDuration(1) {self.viKuai.center.x = self.view.bounds.width - self.viKuai. ...

  3. Swift 波浪动画

    class WaveView: UIView {var firstWaveColor = UIColor() // 第一个波浪颜色var secondWaveColor = UIColor() // ...

  4. 如何用Swift实现一个好玩的弹性动画

    本文由CocoaChina译者浅夏@旧时光翻译自Raywenderlich 原文:How To Create an Elastic Animation with Swift 每个像样的iOS应用程序一 ...

  5. Swift coreAnimation 加计时器写的游戏《飞机大战》

    近期在学习swift的动画和图层.就用现学的东西写了个游戏,基本思想 基本功能都实现了.图片都是在网上找得.希望能帮助大家更好的理解动画和图层. 声明下,我是刚開始学习的人,代码写的不好.大家应该都能 ...

  6. iOS 常用动画第三方

    动画 Core Animation笔记,基本的使用方法 - Core Animation笔记,基本的使用方法:1.基本动画,2.多步动画,3.沿路径的动画,4.时间函数,5.动画组. awesome- ...

  7. iOS开发之swift资料大全

    目录(?)[+] 版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1 ...

  8. swift 学习资料大全

    版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1. 将Swift从 ...

  9. OC swift 一些常用第三方收集整理 (第三方集合)

    整理了Xcode好用的插件,包括OC和Swift,信息更详细和完整 下拉刷新 EGOTableViewPullRefresh– 最早的下拉刷新控件. SVPullToRefresh– 下拉刷新控件. ...

  10. iOS超全开源框架、项目和学习资料汇总(1)UI篇

    上下拉刷新控件 **1. ** MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐) ...

最新文章

  1. 距离高效率学习CV算法我还有多远的距离?
  2. 无监督学习典例:聚类
  3. zigbee cc2530地址空间 layout 和flash操作
  4. 【iCore3 双核心板】例程二十二:LAN_UDP实验——以太网数据传输
  5. 技术停滞_检测和测试停滞的流– RxJava常见问题解答
  6. Java中的JDBC教程
  7. tp5 空格拆分关键词,多个关键词进行查询
  8. C# 列表中查找大小比较
  9. 离散数学与计算机的发展,计算机学科发展中离散数学的作用与运用
  10. 用注册表修改右键菜单
  11. FP Growth算法简介+实例
  12. python numpy安装教程_python 环境下安装 numpy
  13. STM32的内存扩展应用实现,小内存的单片机也能干大事(FSMC+SRAM)
  14. 【Linux】imx6ull Kernel 源码下载和编译环境配置
  15. Word2016安装MathType流程及“53”.wll文件未找到错误解决办法
  16. 显卡内存和计算机内存,显卡爆显存和满显存有什么区别
  17. 猿辅导、掌门教育悄然转身,发力素质教育
  18. 我他妈的是什么!!!!
  19. 5G的10大典型应用场景,及详细应用功能
  20. 跨专业考研学生的三个问题

热门文章

  1. CreateInstance 方法解析
  2. 让mysql timeStamp类型支持默认值0000-00-00 00:00:00
  3. 【渝粤教育】国家开放大学2018年春季 4990T电子商务概论(农) 参考试题
  4. [渝粤教育] 中国地质大学 高级会计学 复习题 (2)
  5. Numpy系列(二)对数组按索引查询
  6. Pandas系列(十五)stack和pivot实现数据透视
  7. deal.II链接PETSc过程记录
  8. 第三次作业 词频统计
  9. 05 库的简单操作
  10. 03.Java语言基础