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.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之动画总结相关推荐
- Swift 弹性动画教程
原文:How To Create an Elastic Animation with Swift 作者:Daniel Tavares 译者:kmyhy 每个优雅的 iOS app 都会有一些定制的元素 ...
- swift 常用动画
一.位置变化动画 UIView.animateWithDuration(1) {self.viKuai.center.x = self.view.bounds.width - self.viKuai. ...
- Swift 波浪动画
class WaveView: UIView {var firstWaveColor = UIColor() // 第一个波浪颜色var secondWaveColor = UIColor() // ...
- 如何用Swift实现一个好玩的弹性动画
本文由CocoaChina译者浅夏@旧时光翻译自Raywenderlich 原文:How To Create an Elastic Animation with Swift 每个像样的iOS应用程序一 ...
- Swift coreAnimation 加计时器写的游戏《飞机大战》
近期在学习swift的动画和图层.就用现学的东西写了个游戏,基本思想 基本功能都实现了.图片都是在网上找得.希望能帮助大家更好的理解动画和图层. 声明下,我是刚開始学习的人,代码写的不好.大家应该都能 ...
- iOS 常用动画第三方
动画 Core Animation笔记,基本的使用方法 - Core Animation笔记,基本的使用方法:1.基本动画,2.多步动画,3.沿路径的动画,4.时间函数,5.动画组. awesome- ...
- iOS开发之swift资料大全
目录(?)[+] 版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明: 1 ...
- swift 学习资料大全
版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明: 1. 将Swift从 ...
- OC swift 一些常用第三方收集整理 (第三方集合)
整理了Xcode好用的插件,包括OC和Swift,信息更详细和完整 下拉刷新 EGOTableViewPullRefresh– 最早的下拉刷新控件. SVPullToRefresh– 下拉刷新控件. ...
- iOS超全开源框架、项目和学习资料汇总(1)UI篇
上下拉刷新控件 **1. ** MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐) ...
最新文章
- 距离高效率学习CV算法我还有多远的距离?
- 无监督学习典例:聚类
- zigbee cc2530地址空间 layout 和flash操作
- 【iCore3 双核心板】例程二十二:LAN_UDP实验——以太网数据传输
- 技术停滞_检测和测试停滞的流– RxJava常见问题解答
- Java中的JDBC教程
- tp5 空格拆分关键词,多个关键词进行查询
- C# 列表中查找大小比较
- 离散数学与计算机的发展,计算机学科发展中离散数学的作用与运用
- 用注册表修改右键菜单
- FP Growth算法简介+实例
- python numpy安装教程_python 环境下安装 numpy
- STM32的内存扩展应用实现,小内存的单片机也能干大事(FSMC+SRAM)
- 【Linux】imx6ull Kernel 源码下载和编译环境配置
- Word2016安装MathType流程及“53”.wll文件未找到错误解决办法
- 显卡内存和计算机内存,显卡爆显存和满显存有什么区别
- 猿辅导、掌门教育悄然转身,发力素质教育
- 我他妈的是什么!!!!
- 5G的10大典型应用场景,及详细应用功能
- 跨专业考研学生的三个问题