这是一篇翻译文章。原文出处: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动画教程的更多相关文章

  1. Swift基础之Animation动画研究

    最近研究了一下,Swift语言中关于Animation动画的实现学习,分两次进行相关内容的讲解 用表格列出各种动画情况 Demo首页显示展示了一种动画显示方式,代码如下: //绘画装饰    func ...

  2. ios animation 动画效果实现

    1.过渡动画 CATransition CATransition *animation = [CATransition animation]; [animation setDuration:1.0]; ...

  3. 转 iOS Core Animation 动画 入门学习(一)基础

    iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...

  4. Swift版iOS游戏框架Sprite Kit基础教程下册

    Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程. ...

  5. iOS: 学习笔记, Swift与Objective-C混用简明教程(转载)

    Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很 ...

  6. iOS 核心动画 Core Animation浅谈

    代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...

  7. 怎么录制Android或IOS动画教程

    前一篇文章介绍了用DemoCreator制作Android视频教程,今天再介绍一种方法. 那就是用GifCam软件录制,此软件录制导出成Gif动画图片,可直接放在你的文章里面,效果比flash要好. ...

  8. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

  9. Swift语言Auto Layout入门教程:上篇

    原文:Beginning Auto Layout Tutorial in Swift: Part 1/2,译者:@TurtleFromMars 开始用自动布局约束的方式思考吧! 更新记录:该教程由Br ...

随机推荐

  1. about opencl

    Platform:LG G3,Adreno 330 1. 8M(3264x2448) memmap方式读入时间24ms,读出时间12ms,时间与内存大小基本成线性关系.使用memmap 与 memco ...

  2. ajax请求超时时间

    http://www.cnblogs.com/charling/p/3356216.html get post 请求 http://www.cnblogs.com/oneword/archive/20 ...

  3. 深入理解JVM-3垃圾收集器与内存分配策略

    在上面一篇文章中,介绍了java内存运行时区域,其中程序计数器.虚拟机栈.本地方法栈3个区域随线程生灭:栈中的栈帧随着方法的进入和退出而有条不紊的执行着进栈出栈的操作,每一个栈帧中分配着多少内存基本上 ...

  4. 通用 PE 工具箱1.9.6(XP内核)by Uepon(李培聪)

    通用 PE 工具箱1.9.6(XP内核)by Uepon(李培聪)官网:http://hi.baidu.com/uepon?page=21.8版论坛帖子:http://bbs.wuyou.net/fo ...

  5. Java集合框架:HashMap

    转载: Java集合框架:HashMap Java集合框架概述   Java集合框架无论是在工作.学习.面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以 ...

  6. Linux基础: 网络命令和进程管理

    ​  netstat lsof ps pstree pkill/kill (了解jenkins git,排查环境) 查询服务器之间是否有链接(netstat -an) 某个服务是否启动(了解服务对应的 ...

  7. ZZC语言代码风格

    程序员之路--关于代码风格 优秀的代码风格如同一身得体的打扮,能够给人以良好的印象.初学程序设计,首先必须建立良好的编程习惯,这其中就包括代码风格.本文就代码风格中的几个重点问题进行了讨论,并在文后给 ...

  8. toggleClass() 方法做类似于微信扣扣点击语音图标按钮变成切换到语音输入功能,点击键盘图标按钮切换到文字输入状态的效果

    就是这种效果的类似. <html><head><script type="text/javascript" src="/jquery/jqu ...

  9. apache 修改最大连接数

    1.在哪里设置? 服务器的为FreeBSD 6.2 ,apache 2.24,使用默认配置(FreeBSD 默认不加载自定义MPM配置),默认最大连接数是250 在/usr/local/etc/apa ...

  10. PMP 项目管理

    1.什么是项目管理   项目管理就是把各种知识,技能,工具,技术应用于项目活动,来满足项目的需求.这个是从技术方面来说的.其实在项目管理的技术 层面背后,还有理念层面的内容.学习项目管理,除了学习技术 ...