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 ...
随机推荐
- Android入门:发送HTTP的GET和POST请求
HTTP的请求详解在我的博客中已经讲解过: http://blog.csdn.net/xiazdong/article/details/7215296 我在http://blog.csdn.net/x ...
- 【剑指offer 面试题13】在 O(1) 时间删除链表结点
#include <iostream> using namespace std; //构造链表结点 struct ListNode { int val; ListNode *next; L ...
- 《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换
文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将 ...
- 《Python核心编程》 第七章 映射和集合类型 - 习题
课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {' :' python' } dict2 = {' :"hello" } dict ...
- [转]关于GCD与多线程
GCD是什么,你知道吗?你知道了GCD,你确定你会使用吗? 这一篇文章是站在初学者角度去分析GCD,原因是这个很多iOS开发者根本就没用过,即使用过,不知道其中的原理.讲解之前认识一下什么是线程,为什 ...
- oc_转_NSArrray 和 NSMutableArrray
Objective C 中除了可以使用C中的基本数组外,如 int[5];,char word[] = {‘a’, 'b’, 'c’};,Foundation 还提供了 NSArray 类.Found ...
- Lucene Query Term Weighting
方法 public static Query TermWeighting(Query tquery,Map<String,Float>term2weight){ BooleanQuery ...
- [转]SQL中char、varchar、nvarchar的区别
char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. nvarcha ...
- 第二百四十一天 how can I 坚持
今天去了趟小米之家,红米note3感觉还好吧.小米,希望不会令人失望啊,很看好的,应该不算是米粉吧. 腾讯课堂. hadoop. 摄影. 没有真正的兴趣啊,一心只想着玩,什么事真正的兴趣,就是无时无刻 ...
- HDU 4884 TIANKENG’s rice shop (模拟)
TIANKENG's rice shop 题目链接: http://acm.hust.edu.cn/vjudge/contest/123316#problem/J Description TIANKE ...