tableview中用动画效果改变cell的高度
我们要的效果大概就是如下效果:
当我们选择一个cell的时候,我们就要改变它的高度,并且以动画的形式。
我们该如何实现这个效果呢?我们主要需要使用以下这两个方法:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
两个方法分别控制cell的高度和cell被选中之后会发生的事情。
我们在第一个方法中,需要实现一些我们想要的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(该indexPath被选中) {
return 60 * 2.0;
}
return 60;
}
而在第二个方法中,我们控制当cell被点击后我们所有希望发生的事情,并且我们今天想要探究的“大明星代码”也在其中~~
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:TRUE];
//获取当前indexPath并判断对应的Cell是否被选中
//最神奇的地方!!
[tableView beginUpdates];
[tableView endUpdates];
}
那么为什么在这里会发生神奇的事情呢?
让我们来重点关注这行代码:[tableView beginUpdates];
文档中对这行代码的解释为让TableView产生插入,删除或重新加载cell
看到这里大家应该就恍然大悟了吧?原来当我们点击了一个cell后我们相当于重新加载了一遍我们的tableview,但是却和[tableView reloadata]是完全不一样的风格,reloadData这个方法会让tableView整体重新加载,相当于是作用在tableView上,而beginUpdates只是作用在cell上!
好了,大家应该已经可以看到效果了,如果还是希望可以读到我们全部的代码,可以通过以下链接获取~~
http://www.locassa.com/wp-content/uploads/2011/05/AnimatedTableViewCell.zip
tableview中用动画效果改变cell的高度的更多相关文章
- Jquery如何使用动画效果改变背景色
Jquery如何使用动画效果改变背景色 一.问题引入 jquery的animate动画虽然强大,但是无法使用其进行背景色(background-color)的动画效果变化,因为animate动画效果只 ...
- Swift 添加到TableView实现动画效果
let indexPath = NSIndexPath(forRow:0 ,inSection:0) self.tableView.insertRowsAtIndexPaths([indexPath] ...
- IOS中用UIFont返回字体的行高、动态改变tableView中Cell的高度
一.动态改变Cell的高度 1.利用tableView代理方法的返回值决定每一行cell的高度 - (CGFloat)tableView:(UITableView *)tableView height ...
- TableView cell自适应高度-----xib
1.通过xib创建一个cell,将label进行上左下右,进行适配, self.automaticallyAdjustsScrollViewInsets = NO; self.edgesForExte ...
- 前端基础-jQuery的动画效果
阅读目录 隐藏 显示 切换 下拉 上卷 显示 一.jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局, ...
- CSS3中的动画效果记录
今天要记录的是CSS3中的三种属性transform.transition以及animation,这三个属性大大提升了css处理动画的能力. 一.Transform 变形 CSS中transform ...
- 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样)
1.新建一个继承自UITableViewCell的子类 2. 在initWithStyle:方法中进行子控件的初始化 1> 将有可能显示的所有子控件都添加到contentView中 2> ...
- css动画效果之transition(动画过渡效果属性)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 点击单个cell高度变化的动画效果
点击单个cell高度变化的动画效果 效果 说明 1. 点击单个cell的时候,其展开与缩放动画实现起来是很麻烦的,做过相关需求的朋友一定知道其中的坑 2. 本例子只是提供了一个解决方案,为了简化操作, ...
随机推荐
- centos下安装nodejs及websocket
软件环境: VMware Workstation CentOS 6.5 NodeJS v0.12.5 安装过程: Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安 ...
- Android Weekly Notes Issue #257
Android Weekly Issue #257 May 14th, 2017 Android Weekly Issue #257 本期内容包括: Gradle中关于项目的一些设置; Android ...
- ManualResetEvent使用
1.定义 MSDN定义: 通知一个或多个正在等待的线程已发生事件.此类不能被继承. 详细说明: ManualResetEvent 允许线程通过发信号互相通信.通常,此通信涉及一个线程在其他线程进行之前 ...
- Contiki 2.7 Makefile 文件(三)
2.第二部分 这里的usage,targets,savetarget,savedefines都是伪目标. 和all不同,这些伪目标不会被执行,除非显式指定这些目标. 这里有两个目标savetarget ...
- oracle_sql的用法?
本机连接oracle 数据库?打开cmd ----> 不同的用户有不同的用户名密码 ----> sqlplus scott/tiger(安装oracle数据库预留的用户)---- 回车 - ...
- Linux- Linux自带定时调度Crontab使用详解
Linux自带定时调度Crontab使用详解 在Linux当中,有一个自带的任务调度功能crontab,它是针对每个用户,每个用户都可以调度自己的任务. 示例:每分钟执行一次,将时间写入到指定文件当中 ...
- Spark- Linux下安装Spark
Spark- Linux下安装Spark 前期部署 1.JDK安装,配置PATH 可以参考之前配置hadoop等配置 2.下载spark-1.6.1-bin-hadoop2.6.tgz,并上传到服务器 ...
- (转)linux 打开文件数 too many open files 解决方法
too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户最大允许打开文件数量 ulimit -a fdipzone@ubuntu: ...
- babel-runtime 和 babel-polyfill
Babel 默认只转换新的 JavaScript 语法 https://excaliburhan.com/post/babel-preset-and-plugins.html babel-plugin ...
- WebP探索
不同场景下WebP的使用方案总结: App:Android4.0以上提供原生支持,其他版本使用官方提供的解析库(Android.iOS): 浏览器:JS能力检测,对支持 WebP 的用户输出 ...