iOS开发——动画篇Swift篇&动画效果的实现
Swift - 动画效果的实现
- duration:动画从开始到结束的持续时间,单位是秒
- delay:动画开始前等待的时间
- options:动画执行的选项。里面可以设置动画的效果。可以使用UIViewAnimationOptions类提供的各种预置效果
- anmations:动画效果的代码块
- completion:动画执行完毕后执行的代码块
(2)UIView支持动画效果的属性
- frame:此属性包含一个矩形,即边框矩形,此值确定了当前视图在其父视图坐标系中的位置与尺寸
- bounds:也是矩形,边界矩形,它指的是视图在其自己的坐标系中的位置和尺寸,左上角坐标永远是(0,0)
- center:确定视图的中心点在其父视图坐标系中的位置坐标。即定义当前视图在父视图中的位置
- alpha:视图的透明度。(但视图完全透明时,不能响应触摸消息)
- backgroundColor:背景色
- transform:这是一种3×3的变化矩阵。通过这个矩阵我们可以对一个坐标系统进行缩放、平移、旋转以及这两者的任意组操作。
(3)Transform(变化矩阵)的四个常用的变换方法
- CGAffineTransformMake():返回变换矩阵
- CGAffineTransformMakeTranslation():返回平移变换矩阵
- CGAffineTransformMakeScale():返回缩放变换矩阵
- CGAffineTransformMakeRotation():返回旋转变换矩阵
(4)样例1:方块初始缩小为原始尺寸1/10。在1秒的动画中复原到完整大小,同时还伴随旋转效果。



- import UIKit
- class ViewController: UIViewController {
- //游戏方格维度
- var dimension:Int =
- //数字格子的宽度
- var width:CGFloat =
- //格子与格子的间距
- var padding:CGFloat =
- //保存背景图数据
- var backgrounds:Array<UIView>!
- override func viewDidLoad()
- {
- super.viewDidLoad()
- self.backgrounds = Array<UIView>()
- setupGameMap()
- playAnimation()
- }
- func setupGameMap()
- {
- var x:CGFloat =
- var y:CGFloat =
- ..<dimension
- {
- println(i)
- y =
- ..<dimension
- {
- //初始化视图
- var background = UIView(frame:CGRectMake(x, y, width, width))
- background.backgroundColor = UIColor.darkGrayColor()
- self.view.addSubview(background)
- //将视图保存起来,以备后用
- backgrounds.append(background)
- y += padding + width
- }
- x += padding+width
- }
- }
- func playAnimation()
- {
- for tile in backgrounds{
- //先将数字块大小置为原始尺寸的 1/10
- tile.layer.setAffineTransform(CGAffineTransformMakeScale(0.1,0.1))
- //设置动画效果,动画时间长度 1 秒。
- UIView.animateWithDuration(, delay:0.01,
- options:UIViewAnimationOptions.TransitionNone, animations:
- {
- ()-> Void in
- //在动画中,数字块有一个角度的旋转。
- tile.layer.setAffineTransform(CGAffineTransformMakeRotation())
- },
- completion:{
- (finished:Bool) -> Void in
- UIView.animateWithDuration(, animations:{
- ()-> Void in
- //完成动画时,数字块复原
- tile.layer.setAffineTransform(CGAffineTransformIdentity)
- })
- })
- }
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- }
(5)样例2:只有从小变大的效果
- func playAnimation()
- {
- for tile in backgrounds{
- //先将数字块大小置为原始尺寸的 1/10
- tile.layer.setAffineTransform(CGAffineTransformMakeScale(0.1,0.1))
- //设置动画效果,动画时间长度 1 秒。
- UIView.animateWithDuration(, delay:0.01,
- options:UIViewAnimationOptions.TransitionNone, animations:
- {
- ()-> Void in
- tile.layer.setAffineTransform(CGAffineTransformMakeScale(,))
- },
- completion:{
- (finished:Bool) -> Void in
- UIView.animateWithDuration(0.08, animations:{
- ()-> Void in
- tile.layer.setAffineTransform(CGAffineTransformIdentity)
- })
- })
- }
- }
(6)样例3:方块从不透明到透明的效果
- func playAnimation()
- {
- for tile in backgrounds{
- tile.alpha = ;
- //设置动画效果,动画时间长度 1 秒。
- UIView.animateWithDuration(, delay:0.01,
- options:UIViewAnimationOptions.CurveEaseInOut, animations:
- {
- ()-> Void in
- },
- completion:{
- (finished:Bool) -> Void in
- UIView.animateWithDuration(, animations:{
- ()-> Void in
- tile.alpha =
- })
- })
- }
- }
二,使用beginAnimations和commitAnimations方法来实现动画
- beginAnimations:此方法开始一个动画块,调用commitAnimations结束一个动画块,并且动画块是允许嵌套的。
- commitAnimations:此方法用于结束一个动画块,动画是在一个独立的线程中运行的,动画在生效时,所有应用程序不会中断。
在beginAnimations和commitAnimations中间的代码中,我们可以设置各种动画的属性。比如持续时间,使用哪种预置的动画效果等。
(1)淡入,淡出,移动,改变大小动画
- //淡出动画
- UIView.beginAnimations(nil, context: nil)
- UIView.setAnimationDuration(2.0)
- imageView.alpha = 0.0
- UIView.commitAnimations()
- //淡入动画
- UIView.beginAnimations(nil, context: nil)
- UIView.setAnimationDuration(2.0)
- imageView.alpha = 1.0
- UIView.commitAnimations()
- //移动动画
- UIView.beginAnimations(nil, context: nil)
- UIView.setAnimationDuration(2.0)
- imageView.center = CGPointMake(, )
- UIView.setAnimationCurve(UIViewAnimationCurve.EaseOut) //设置动画相对速度
- UIView.commitAnimations()
- //大小调整动画
- UIView.beginAnimations(nil, context: nil)
- UIView.setAnimationDuration(2.0)
- imageView.frame = CGRectMake(,,,)
- UIView.commitAnimations()
(2)两个视图切换的过渡动画
UIViewAnimationTransition定义了5种过渡动画类型:
- None:无过渡动画效果
- FlipFromLeft:从左侧向右侧翻转
- FlipFromRight:从右侧向左侧翻转
- CurlUp:向上卷数翻页
- CurlDown:向下翻页
- var redView:UIView = UIView(frame: CGRectMake(,,,))
- redView.backgroundColor = UIColor.redColor()
- self.view.insertSubview(redView, atIndex: )
- var blueView:UIView = UIView(frame: CGRectMake(,,,))
- blueView.backgroundColor = UIColor.blueColor()
- self.view.insertSubview(blueView, atIndex: )
- UIView.beginAnimations(nil, context: nil)
- UIView.setAnimationDuration(4.0)
- UIView.setAnimationTransition(UIViewAnimationTransition.CurlUp, forView: self.view, cache: true)
- self.view.exchangeSubviewAtIndex(, withSubviewAtIndex: )
- UIView.commitAnimations()
- //将整个主视图面板实现一个翻转效果
- UIView.beginAnimations("animation", context: nil)
- UIView.setAnimationDuration()
- UIView.setAnimationCurve(UIViewAnimationCurve.EaseInOut)
- UIView.setAnimationTransition(UIViewAnimationTransition.FlipFromLeft, forView: self.view, cache: false)
- UIView.commitAnimations()
iOS开发——动画篇Swift篇&动画效果的实现的更多相关文章
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画
CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...
- iOS开发——网络编程Swift篇&Alamofire详解
Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...
- ios开发——实用技术总结Swift篇&swift常用开发技术总结
swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...
- iOS开发——网络编程Swift篇&(八)SwiftyJSON详解
SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...
- iOS开发零基础--Swift篇 元组
元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...
- iOS开发零基础--Swift篇 循环
循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...
- iOS开发零基础--Swift篇:逻辑分支
一. 分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 二. if分支语句 和OC中if语句有一定的区别 判断句可以不加() 在Swift的判断句中必须有 ...
- iOS开发零基础--Swift篇:Swift中数据类型
Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int32 ...
随机推荐
- 你今天Python了吗?(上)
你今天Python了吗?为了提高你的生产效率,赶快去关注一下小蟒蛇的成长吧!别再把Python当作你的业余爱好了,她能为你做手头上几乎所有的工作,而且能做得更好,也让你把写代码看成是一种真正的乐趣.为 ...
- JavaScript中的重载解读
在JavaScript中有一种特殊的数据类型---Function类型,JavaScript的每个函数都是Function类型的实例.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与 ...
- Ubuntu 软件包管理详解
原文转载自:http://www.cppblog.com/jb8164/archive/2009/01/09/71583.html Ubuntu 方便宜用,最值得让人称道的便是其安装软件的方式, 一条 ...
- [Hive - Tutorial] Creating, Showing, Altering, and Dropping Tables
Creating, Showing, Altering, and Dropping Tables See Hive Data Definition Language for detailed info ...
- 【Hadoop学习】HDFS中的集中化缓存管理
Hadoop版本:2.6.0 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4146398.html 概述 ...
- uva202:循环小数(循环节+抽屉原理)
题意: 给出两个数n,m,0<=n,m<=3000,输出n/m的循环小数表示以及循环节长度. 思路: 设立一个r[]数组记录循环小数,u[]记录每次的count,用于标记,小数计算可用 r ...
- 为了以后愉快的玩耍,Virtualbox安装Ubuntu
为了以后愉快的玩耍,Virtualbox安装Ubuntu 每次安装虚拟机都是总要折腾一下,毕竟不是特别熟悉,几个小细节总要google半天,为了以后能愉快的玩耍.把这些问题都记录下来,免得再折腾. 此 ...
- POJ 2253 Frogger (dijkstra 最大边最小)
Til the Cows Come Home 题目链接: http://acm.hust.edu.cn/vjudge/contest/66569#problem/A Description The i ...
- Spring Autowiring by Name
In Spring, "Autowiring by Name" means, if the name of a bean is same as the name of other ...
- Linux的运行级别和chkconfig用法
Linux的运行级别和chkconfig用法 一.Linux的运行级别 在装MySQL的时候,才知道了Linux的运行级别这么一回事.汗…自己太水了…下面总结一下: 什么是运行级别呢?简 ...