http://www.raywenderlich.com/76024/swift-table-view-animations-tutorial-drop-cards

标准 table view 是一个强大而又灵活的数据呈现方式。大部分情况下你的app 都使用了某种形式的 table view。可是。它有一个缺点就是。无法进行太多的定制,你的 app 会淹没在成千上万的相似是 app 中。

为了不使用千篇一律的 table view,我们能够利用某些动画以便使你的app 更加耀眼。看一下 Google+ app。卡片从边上滑过的动画。

假设你没看过,请在这里下载

,

,

}

}

}

注意,创建 startTransform 的代码如今放到了存储属性TipInCellAnimatorStartTransform 中。并且我们没实用定义 getter 方法的方式定义这个属性(这样做会导致每次调用getter 方法都创建一次 transform)。我们是通过一个闭包+()的方式给这个属性赋默认值的。一对空的圆括号表示强制调用这个闭包。闭包的返回值将传递给这个属性。这个细节在苹果的Swift 官方教程中“初始化”一章中讨论。

请參考“用闭包或函数设置属性的默认值”。

有克制地使用动画

尽管动画的效果非常好看,但却不能无克制地使用它。假设音效和动画的滥用以前让你深受其害,那么你应该知道过度依赖特效所带来的恶果!

在这个项目中。仅仅需在单元格第一次渲染的时候使用特效即可了——当表格从上到下滚动时。

当表格从下往上滚时,单元格不须要使用特效。

我们须要存储哪些单元格已经显示过的。以便第二次显示时不使用特效。这里。我们使用了一个 Swift 字典对象。

打开MainViewController.swift 增加一个属性:

var didAnimateCell:[NSIndexPath: Bool] = [:]

定义了一个字典对象, key 为 NSIndexPaths 类型,值为 Bools 类型。然后改动 tableView(tableView:,willDisplayCell:, forRowAtIndexPath:) 方法为:

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,                          forRowAtIndexPath indexPath: NSIndexPath) {

if didAnimateCell[indexPath] == nil || didAnimateCell[indexPath]! == false {

didAnimateCell[indexPath] = true

TipInCellAnimator.animate(cell)

}

}

我们推断单元格的 index path 是否已经在didAnimateCell 字典中存在。假设不存在,说明是第一次显示这个单元格。那么我们就执行单元格动画并将 indexPath 设置到字典中。假设存在,什么都不做。

执行程序。上拉滚动表格,你将看到单元格动画:

Swift 表视图动画教程: Drop-In Cards的更多相关文章

  1. Swift 可展开可收缩的表视图

    主要学习与运行效果 在本节的内容中,我们将通过一个具体实例的实现过程,详细讲解在表视图当中,如何创建一个可展开可收缩的表视图.为了让读者有着更为直观的印象,我们将通过模仿QQ好友列表来实现这个效果. ...

  2. 表视图控制器(TableViewController)(二)

    1 tableView的编辑模式 1.1 问题 表视图可以进入编辑模式,当进入编辑模式就可以进行删除.插入.移动单元等操作,本案例还是使用联系人界面学习如何进入编辑模式,以及进入编辑模式之后的删除.插 ...

  3. IOS开发-表视图LV3导航控制器

    学到这里感觉有点难了,其实这篇文章再草稿箱里放了好久了~ 最近对于学习的热情下降了.这不行-抓紧学习走起! 在这一章节的学习中主要针对导航控制器及表视图来建立多视图的应用, 首先要了解一些概念-- 1 ...

  4. Swift游戏开发实战教程(霸内部信息大学)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...

  5. 浅谈Android样式开发之View Animation (视图动画)

    引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...

  6. mysql常用表/视图管理语句

    查看所有表  show tables; 查看表/视图结构 desc 表名/视图名: 查看建表过程  show create table 表名: 查看建视图过程 show create view 视图名 ...

  7. 表视图控制器(TableViewController)(三) 、 表视图搜索

    1 乐库的设置界面 1.1 问题 tableView分为静态(static)和动态(dynamic),之前使用的都是动态的tableView,表视图的有多少分区.有多少行以及每一行显示的内容都不是固定 ...

  8. IOS开发之表视图(UITableView)

    IOS开发之表视图(UITableView)的基本介绍(一) (一):UITableView的基本概念 1.在IOS开发中,表视图的应用十分广泛和普及.因此掌握表视图的用法显得非常重要.一般情况下对于 ...

  9. sql 删除表数据truncate delete drop的区别

    已下内容为转载内容:学习之用 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. ...

随机推荐

  1. OC语言-03NSString

    /* 1. @"kite" 这是一个OC字符串,OC的字符串也是一个对象, 由NSString类(继承于NSObject) 创建 2. 输出时使用 %@ 3. 对象方法 [对象名 ...

  2. PHPStorm——配置修改

    字体修改: FiraCode字体:https://github.com/tonsky/FiraCode 1.双击安装字体 2. 关闭错别字检测

  3. Hbase 学习笔记(一) Hbase的物理模型 Hbase为每个值维护了一个多级索引,即<key, column family, column name, timestamp>

      比如第一个region 代表 0-100 第二个region 代表 101 -200的 分的越多越不好管理,但同时方便了并行化处理,并发度越高,处理的越快.mapreduce就是按照rowkey的 ...

  4. tyvj 1342 教主泡嫦娥 环上DP

    342 教主泡嫦娥 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 2012年12月21日下午3点14分35秒,全世界各国的总统以及领导人都已经汇聚在中国的方 ...

  5. 【Maven】解决maven打jar包报错 source 1.3 中不支持注释 (请使用 -sour

    问题:maven在进行打包时,报 '请使用-source 5 或者更高版本以启用XX'的信息并导致打包失败. 原因:maven默认的编译插件的java版本较低,导致其不支持例如泛型,注解等用法. 解决 ...

  6. Hibernate 使用HQL的 in 时要注意判断in的值(list)是否包含数据

    如果你使用 HQL的 in,例如: sessionFactory.getCurrentSession() .createQuery("select hlInfo.id, count(id) ...

  7. Andoid 学习笔记 AppCompatEditText

    android.support.v7.widget.AppCompatEditText 只有浮动标签 style中添加 <style name="txt_lab" paren ...

  8. duck type鸭子类型

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定.这个概念的名字来源于 ...

  9. JAVA程序,SESSION没有关闭导致数据库异常

    可以看到连接到数据库的机器名为perass: PROCESS 1234表示是JDBC的进程 查询SQL: select username,         machine,         statu ...

  10. TCP/IP FTP/TFTP

    引言 从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务.而FTP和TFTP就是这样的协议. 关于文件传输协议FTP? 端口21使用服务TCP [FTP模型] FTP连接? 1.控制 ...