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

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

2.初始化相关信息

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

3.实现相关动画

  1. //简单Y轴平移动画
  2. func basicAnimate() {
  3. UIView.animateWithDuration(1) { () -> Void in
  4. self.mFirstView.frame.origin.y += 100
  5. }
  6. }
  7. //可配置option信息动画
  8. func optionAnimate() {
  9. UIView.animateWithDuration(3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
  10. self.mFirstView.frame.origin.x += 100
  11. //Nest重写父层option属性
  12. UIView.animateWithDuration(3, delay: 0, options: [UIViewAnimationOptions.OverrideInheritedOptions, UIViewAnimationOptions.OverrideInheritedCurve, UIViewAnimationOptions.CurveEaseOut], animations: { () -> Void in
  13. self.mSecondView.frame.origin.x += 100
  14. }, completion: { (finished:Bool) -> Void in
  15. })
  16. }) { (finished: Bool) -> Void in
  17. }
  18. }
  19. //试图动画操作子视图
  20. func operateSubview() {
  21. UIView.transitionWithView(self.mFirstView, duration: 1, options: [UIViewAnimationOptions.TransitionCrossDissolve, UIViewAnimationOptions.AllowAnimatedContent], animations: { () -> Void in
  22. self.mFirstSubView.frame.origin.x += 150
  23. }) { (finished: Bool) -> Void in
  24. }
  25. }
  26. //替换视图动画
  27. func replaceView() {
  28. let view = UIView(frame: CGRect(x: 21, y: 150, width: 240, height: 60))
  29. view.backgroundColor = UIColor.magentaColor()
  30. UIView.transitionFromView(self.mFirstView, toView: view, duration: 1, options: UIViewAnimationOptions.TransitionCurlUp) { (finished:Bool) -> Void in
  31. }
  32. }
  33. //----------------------核心动画----------------------
  34. /**
  35. *显式动画
  36. */
  37. func newBasicAnimate() {
  38. //创建一个imageview视图
  39. let imgView = UIImageView(image: UIImage(named: "img"))
  40. imgView.frame = CGRect(x: 150, y: 200, width: 100, height: 100)
  41. self.view.addSubview(imgView)
  42. //1.选定角色
  43. let layer = imgView.layer
  44. layer.cornerRadius = 5.0
  45. //2.写剧本
  46. let scaleAnimate = CABasicAnimation(keyPath: "transform.scale")
  47. scaleAnimate.fromValue = 1.0
  48. scaleAnimate.toValue = 1.5
  49. scaleAnimate.autoreverses = true
  50. scaleAnimate.repeatCount = MAXFLOAT
  51. scaleAnimate.duration = 1.0
  52. //第二个剧本
  53. let opaqueAnimate = CABasicAnimation(keyPath: "opacity")
  54. opaqueAnimate.fromValue = 0.1
  55. opaqueAnimate.toValue = 1
  56. opaqueAnimate.autoreverses = true
  57. opaqueAnimate.repeatCount = MAXFLOAT
  58. opaqueAnimate.duration = 1.0
  59. //把剧本交给演员开始动画
  60. layer.addAnimation(scaleAnimate, forKey: "scaleAnimate")
  61. layer.addAnimation(opaqueAnimate, forKey: "opacityAnimate")
  62. }
  63. /**
  64. *关键帧动画
  65. */
  66. func newKeyFrameAniamte() {
  67. //创建一个imageview视图
  68. let imgView = UIImageView(image: UIImage(named: "img"))
  69. imgView.frame = CGRect(x: 200, y: 200, width: 40, height: 40)
  70. self.view.addSubview(imgView)
  71. //1.选定角色
  72. let layer = imgView.layer
  73. layer.cornerRadius = 5.0
  74. //2.写剧本
  75. let keyAnimate = CAKeyframeAnimation(keyPath: "position")
  76. //3.设定关键帧
  77. let value0 = NSValue(CGPoint: layer.position)
  78. let value1 = NSValue(CGPoint: CGPointMake(layer.position.x, layer.position.y + 200))
  79. let value2 = NSValue(CGPoint: CGPointMake(layer.position.x - 150, layer.position.y + 200))
  80. let value3 = NSValue(CGPoint: CGPointMake(layer.position.x - 150, layer.position.y))
  81. let value4 = NSValue(CGPoint: layer.position)
  82. //速度曲线
  83. //let tf0 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
  84. //let tf1 = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
  85. //let tf2 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
  86. //let tf3 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
  87. //keyAnimate.timingFunctions = [tf0, tf1, tf2, tf3]
  88. //每段执行的时间
  89. //keyAnimate.keyTimes = [0.0, 0.5, 0.6, 0.7, 1]
  90. keyAnimate.values = [value0, value1, value2, value3, value4]
  91. keyAnimate.autoreverses = false
  92. keyAnimate.repeatCount = MAXFLOAT
  93. keyAnimate.duration = 6.0
  94. layer.addAnimation(keyAnimate, forKey: "keyAnimate")
  95. }

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

Swift之动画总结的更多相关文章

  1. iOS开发——动画篇Swift篇&动画效果的实现

    Swift - 动画效果的实现   在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimation ...

  2. Swift 带有动画效果的TabBarItem

    额...貌似挺长时间没有总结新知识了,最近在看swift,之前swift刚出来的时候大体看了一遍,后来时间长了没看加之swift2.0做了比较大的调整,公司项目也不是用swift写的,也就没怎么看了, ...

  3. Swift动画编程指南-01 简介

    大家好,我是老镇,这段时间家里和工作上发生了很多的事情,所以很长一段时间都没有出来搞什么小动作了.在接下来的一段时间内我会制作一些列关于使用Swift进行动画编程的视频,希望和大家胃口. 在iOS的世 ...

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

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

  5. ios项目里扒出来的json文件

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...

  6. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)

    下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...

  7. iOS及Mac开源项目和学习资料【超级全面】

    UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...

  8. 谈谈UIView的几个layout方法

    谈谈UIView的几个layout方法-layoutSubviews.layoutIfNeeded.setNeedsLayout...   最近在学习swift做动画,用到constraint的动画, ...

  9. iOS - AutoLayout

    前言 NS_CLASS_AVAILABLE_IOS(6_0) @interface NSLayoutConstraint : NSObject @available(iOS 6.0, *) publi ...

随机推荐

  1. LightOJ 1291 Real Life Traffic

    Real Life Traffic Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on LightOJ. O ...

  2. Hibernate之关于多对多单向关联映射

    [Hibernate]之关于多对多单向关联映射 老师和学生,最典型的多对多关联, Teacher和Student.所谓单向意思就是说.老师知道自己的教的是哪些学生而学生不知道是哪些老师教. 也能够这么 ...

  3. C. Arthur and Table(Codeforces Round #311 (Div. 2) 贪心)

    C. Arthur and Table time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. IIS进程回收 空闲时Net线程未运行

    最近手上的项目,用的是asp.net mvc,后台有个线程在循环接收socket数据,本身在系统运行的时候访问页面没问题,但是发现没访问时,后台没有接收数据,后来知道了是IIS把线程回收了.解决方法如 ...

  5. jQuery选择器,Ajax请求

    jQuery选择器: $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $( ...

  6. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)

    Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...

  7. linux 命令之 apt-get

    apt-get 是一个下载安装软件包的简单命令行接口 使用方法: apt-get [OPTIONS] [COMMANDS] [PACKAGE_NAMES] OPTIONS: -h 帮助信息 -q 输出 ...

  8. 25.Spring @Transactional工作原理

    转自:http://www.importnew.com/12300.html 本文将深入研究Spring的事务管理.主要介绍@Transactional在底层是如何工作的.之后的文章将介绍: prop ...

  9. TeamViewer的下载、安装和使用(windows7、CentOS6.5和Ubuntu14.04(64bit))(图文详解)

    不多说,直接上干货! TeamViewr是远程支持.远程访问.在线协作和会议软件. 分为从windows7.CentOS6.5和Ubuntu14.04(64bit) 系统来详解下载.安装和初步使用! ...

  10. golang recover

    package main import "fmt" func divideByZero() { // Use this deferred function to handle er ...