Swift 实现iOS Animation动画教程
这是一篇翻译文章。原文出处:http://www.raywenderlich.com/95910/uiview-animation-swift-tutorial
动画( animation)是iOS用户界面中非常重要的知识。动画可以吸引用户的注意力,使程序更加美观生动。
更值得注意的是,在扁平化设计时代,动画是让优秀程序脱引而出的一个关键因素。
举个例子
下载这个开始项目(地址:http://cdn4.raywenderlich.com/wp-content/uploads/2015/02/BahamaAir-Starter.zip),程序是一个虚构的航空公司-“Bahama Air”的登陆界面。后面我门就是通过动画让这个界面更美观点。
现在运行效果图:

开始实现一个简单动画:
1、隐藏界面
在viewController.swfit的viewWillAppear()方法中添加如下代码:
heading.center.x -= view.bounds.width username.center.x -= view.bounds.width password.center.x -= view.bounds.width
此时运行,隐藏了三个组建,效果如图:

在viewDidAppear()中添加如下代码来显示头部label“Bahama Login”
UIView.animateWithDuration(0.5, animations: {
self.heading.center.x += self.view.bounds.width
})
运行后,头部label“Bahama Login”向右滑动到中心位置,如图:

延迟动画
在viewDidAppear()中添加如下代码来显示username 文本输入框:
UIView.animateWithDuration(0.5, delay: 0.3, options: nil, animations: {
self.username.center.x += self.view.bounds.width
}, completion: nil)
代码解释:
1.duration:动画时长
2.delay:延迟时长
3.option:掩码选项告诉如何显示动画,待会再介绍
4.animation:显示动画内容的闭包
5.completion:动画执行完毕后执行的闭包。用语清理工作或者执行更多动画使用
运行后效果如图:

可以用来执行动画的UIView属性
不是所有的UIView属性都可以实现动画效果,下面我们列举可以作为动画的UIView属性。
1.位置和大小(position and size)如bounds、frame、center

2.显示样式(appearance)。如backgroundColor、alpha

变形( transformation)。如transformation

动画选项(Animation Options)
1.重复 repeating
.Repeat:让动画重复循环执行
.Autoreverse:只能喝.repeat一起使用,让动画来回执行
2.动画自然(Animation Easing)
现实生活中运动时不回突然启动和突然停止,而是缓慢加速启动,平稳运行,缓慢减速停下。如图所示:

我们在执行动画的时候四个让动画更自然(easing)的选项:
.Linear:这个选项让动画平稳运行
.CurveEaseIn:这个选项让动画加速开始
.CurveEaseOut:这个选项让动画减速停下
.CurveEaseInOut:这个选项让动画加速开始,减速结束。
在viewDidAppear()中添加如下代码:
UIView.animateWithDuration(0.5, delay: 0.4,
options: .Repeat | .Autoreverse | .CurveEaseOut, animations: {
self.password.center.x += self.view.bounds.width
}, completion: nil)
运行后,password文本框从左侧滑进,然后减速停在中间,效果如图:

基本的动画就介绍到这里。
Swift 实现iOS Animation动画教程的更多相关文章
- Swift基础之Animation动画研究
最近研究了一下,Swift语言中关于Animation动画的实现学习,分两次进行相关内容的讲解 用表格列出各种动画情况 Demo首页显示展示了一种动画显示方式,代码如下: //绘画装饰 func ...
- ios animation 动画效果实现
1.过渡动画 CATransition CATransition *animation = [CATransition animation]; [animation setDuration:1.0]; ...
- 转 iOS Core Animation 动画 入门学习(一)基础
iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...
- Swift版iOS游戏框架Sprite Kit基础教程下册
Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程. ...
- iOS: 学习笔记, Swift与Objective-C混用简明教程(转载)
Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很 ...
- iOS 核心动画 Core Animation浅谈
代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...
- 怎么录制Android或IOS动画教程
前一篇文章介绍了用DemoCreator制作Android视频教程,今天再介绍一种方法. 那就是用GifCam软件录制,此软件录制导出成Gif动画图片,可直接放在你的文章里面,效果比flash要好. ...
- iOS核心动画学习整理
最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...
- Swift语言Auto Layout入门教程:上篇
原文:Beginning Auto Layout Tutorial in Swift: Part 1/2,译者:@TurtleFromMars 开始用自动布局约束的方式思考吧! 更新记录:该教程由Br ...
随机推荐
- Google Chrome input 设置 line-height 后光标变得和input一样高
Google Chrome input的height和line-height设置为相同的比默认高度高的值时,当input控件获得焦点并且没有输入内容时,input中的光标会占满整个input控件(如果 ...
- hiho_1052_基因工程
题目大意 给出一个字符串(长度<=1000),字符串中的字符均为ATCG中的某一个.给出一个数字K,通过更改字符串中的某些字符,可以使得字符串的前K个字符形成的子串和最后K个字符形成的子串相同, ...
- iOS AVAudioRecorder 录音频率、声道、位数配置 wav格式
iOS AVAudioRecorder 录音频率.声道.位数配置 #pragma mark 录音设置 - (void)setUP_VOICE_RECOARDER { NSError *error = ...
- java 集合(Map3)
Map接口下的实现类: HashMap 1.存储原理: 向HashMap中添加元素时,首先会调用hashCode(),算的哈希值,然后 算出该元素在哈希表中的存储位置. 情况1 情况2(java 集 ...
- 例题:超市买东西的程序。输入商品信息,计算价格,价格满多少元打折。这道题用到结构体,集合,for循环,if else语句
知识要点: 集合和数组的区别:数组是连续的,同一类型的一块区域,而集合可以是不连续的,多种数据类型的. 集合属性:.count 方法:.Add() 将对象添加到ArrayList中实际包含的元素数 ...
- 可持久化Trie & 可持久化平衡树 专题练习
[xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一 ...
- Java多线程基础:进程和线程之由来
转载: Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够 ...
- EM算法原理以及高斯混合模型实践
EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然 ...
- Feistel密码结构
分组密码:是一种加解密方案,将输入的明文分组当作一个整体出来,输出一个等长的密文分组. 典型的分组大小为64位和128位.密钥长度一般为128位.迭代轮数典型值为16轮. Feistel 密码结构是用 ...
- 理解模数转换器的噪声、ENOB和有效分辨率
ADC的主要趋势之一是分辨率越来越高.这一趋势影响各种应用,包括工厂自动化.温度检测和数据采集.对更高分辨率的需求正促使设计者从传统的12位逐次逼近寄存器(SAR)ADC转至分辨率高达24位的Δ-ΣA ...