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 ...
随机推荐
- LightOJ 1291 Real Life Traffic
Real Life Traffic Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on LightOJ. O ...
- Hibernate之关于多对多单向关联映射
[Hibernate]之关于多对多单向关联映射 老师和学生,最典型的多对多关联, Teacher和Student.所谓单向意思就是说.老师知道自己的教的是哪些学生而学生不知道是哪些老师教. 也能够这么 ...
- 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 ...
- IIS进程回收 空闲时Net线程未运行
最近手上的项目,用的是asp.net mvc,后台有个线程在循环接收socket数据,本身在系统运行的时候访问页面没问题,但是发现没访问时,后台没有接收数据,后来知道了是IIS把线程回收了.解决方法如 ...
- jQuery选择器,Ajax请求
jQuery选择器: $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $( ...
- BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)
Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...
- linux 命令之 apt-get
apt-get 是一个下载安装软件包的简单命令行接口 使用方法: apt-get [OPTIONS] [COMMANDS] [PACKAGE_NAMES] OPTIONS: -h 帮助信息 -q 输出 ...
- 25.Spring @Transactional工作原理
转自:http://www.importnew.com/12300.html 本文将深入研究Spring的事务管理.主要介绍@Transactional在底层是如何工作的.之后的文章将介绍: prop ...
- TeamViewer的下载、安装和使用(windows7、CentOS6.5和Ubuntu14.04(64bit))(图文详解)
不多说,直接上干货! TeamViewr是远程支持.远程访问.在线协作和会议软件. 分为从windows7.CentOS6.5和Ubuntu14.04(64bit) 系统来详解下载.安装和初步使用! ...
- golang recover
package main import "fmt" func divideByZero() { // Use this deferred function to handle er ...