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.frame self.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 in
self.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
其余如下:

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. 云服务器查看外网ip

    curl ip.6655.com/ip.aspx curl whatismyip.akamai.com wget -qO - ifconfig.co curl icanhazip.com dig +s ...

  2. js获取单选button的值

    <!DOCTYPE html> <html> <body> <script type="text/javascript"> func ...

  3. (43)JS运动之链式运动框架

    链式运动框架就是一系列的运动分阶段进行,在普通的运动框架上加上一个參数function,这个function表示下一个要运行的动作.详细代码例如以下: <!DOCTYPE HTML> &l ...

  4. scroll- 滑动条风格调整

    <item name="scrollbarFadeDuration">250</item> <item name="scrollbarDef ...

  5. android-Preference 风格调整

    <CheckBoxPreference android:defaultValue="false" android:layout="?android:attr/pre ...

  6. Node.js安装+环境配置【Windows版】

    Node.js安装及环境配置之Windows篇  一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1.下 ...

  7. git 常用命令(分支)

    查看分支 git branch -r 修改分支名字dev-->test git branch -m dev test 切换分支dev git checkout dev 创建本地分支dev git ...

  8. 一个理性战胜感性的成功案例:P2P投资和活期理财,纠结中提炼出来的1个数学问题

    我经常是投资了P2P,然后用钱,因而损失了一部分收益. 这是一个让我纠结的问题,为了解决这个问题,我不再凭感觉,而是从现实情况,提炼出来1个数学题,解答我的疑惑. 这是一个理性战胜感性的成功案例~ P ...

  9. 安装Mysql最新版本mysql-5.7.10-winx64出现的几个问题解决

    电脑是64位的安装不了Windows (x86, 32-bit),Mysql installer MSI ,然后下载了Windows (x86, 32-bit), ZIP Archive 这种是免安装 ...

  10. [NPM] Update published npm packages using np

    When we want to update our package we need to do a few things: pull latest from our git remote, bump ...