Swift之动画总结
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之动画总结的更多相关文章
- iOS开发——动画篇Swift篇&动画效果的实现
Swift - 动画效果的实现 在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimation ...
- Swift 带有动画效果的TabBarItem
额...貌似挺长时间没有总结新知识了,最近在看swift,之前swift刚出来的时候大体看了一遍,后来时间长了没看加之swift2.0做了比较大的调整,公司项目也不是用swift写的,也就没怎么看了, ...
- Swift动画编程指南-01 简介
大家好,我是老镇,这段时间家里和工作上发生了很多的事情,所以很长一段时间都没有出来搞什么小动作了.在接下来的一段时间内我会制作一些列关于使用Swift进行动画编程的视频,希望和大家胃口. 在iOS的世 ...
- Swift coreAnimation 加计时器写的游戏《飞机大战》
近期在学习swift的动画和图层.就用现学的东西写了个游戏,基本思想 基本功能都实现了.图片都是在网上找得.希望能帮助大家更好的理解动画和图层. 声明下,我是刚開始学习的人,代码写的不好.大家应该都能 ...
- 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. ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- iOS及Mac开源项目和学习资料【超级全面】
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
- 谈谈UIView的几个layout方法
谈谈UIView的几个layout方法-layoutSubviews.layoutIfNeeded.setNeedsLayout... 最近在学习swift做动画,用到constraint的动画, ...
- iOS - AutoLayout
前言 NS_CLASS_AVAILABLE_IOS(6_0) @interface NSLayoutConstraint : NSObject @available(iOS 6.0, *) publi ...
随机推荐
- 3.JPA开发
转自:https://blog.csdn.net/aspnetandjava/article/details/7034779 1. 什么是JPA 1. JPA(Java Persistence API ...
- 2.4 Connect API官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ 2.4 Connect API The Connect API allows imp ...
- STS清理
图中插入代码如下,文件名随意最好见名知意 Add 'this' qualifier to unqualified field accesses Add 'this' qualifier to unqu ...
- Android前后端交互细节--Json转化为对象的原理
移动互联网用户基数越来越大,除了一些工具类(指南针.手电筒等)的应用,绝大部分APP都需要与后端进行交互. 交互的数据格式有JSON.XML等,由于JSON具有语法简单.占用空间小等优势,基本所有的公 ...
- 笔记三:JS正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模式.说白了正则表达式就是处理字符串 ...
- JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系
JSP(JAVA SERVER PAGE)的缩写,其本身就是servlet的简化,是一种动态网页标准,其特点是在HTML代码中嵌入JAVA代码,JSP标签或用户标签来生成网页.至于它为什么会出现,主要 ...
- 8.Swift教程翻译系列——控制流之条件
3.条件语句 常常会须要依据不同的情况来运行不同的代码. 你可能想要在错误发生的时候运行一段额外的代码,或者当某个值变得太高或者太低的时候给他输出出来.要实现这些需求,你能够使用条件分支. Swift ...
- uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
题目链接:uva 1463 - Largest Empty Circle on a Segment 二分半径,对于每一个半径,用三分求出线段到线段的最短距离,依据最短距离能够确定当前R下每条线段在[0 ...
- macos中xcode使用opencv,错误总结
使用opencv时,进行编译时,会出现如上图所示错误,按图示更改就行了(我编译出来的有2处)主要参考 https://blog.csdn.net/fk1174/article/details/7011 ...
- 洛谷——P1774 最接近神的人_NOI导刊2010提高(02)
https://www.luogu.org/problem/show?pid=1774 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古 ...