[个性化你的App]iOS:实现类似于google+的tableviewcell卡片式插入效果
来源:互联网 发布:dobbox源码怎么看 编辑:程序博客网 时间:2024/04/28 03:08
经常可以看到一些主流的应用都使用了很漂亮的动画效果,这必然可以给用户更好的体验.如果我们的应用只使用cocoa框架自带的那些效果, 如何能在appstore众多的应用里脱颖而出呢? 上一次我写了如何实现人人的动态调整的导航栏和雅虎天气的全透明导航栏, 这次就来说说google+.
Google+是我非常喜欢的一款应用, 其UI设计和各种增加用户体验的动画效果(比如卡片式的cell插入, 以及动态滚动的用户评论) 都让我忍不住连点32个赞,下面就来说说怎样实现卡片式的cell插入效果
思路: tableview有一个代理方法:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
顾名思义这个代理方法会在cell出现之前调用. 所有,我们可以在这个方法里调整cell.contentView的frame. 你可以使用各种仿射变化调整contentView的位置. 然后再使用
[UIViewanimateWithDuration:0.7animations:^()] 在这个animation块里面把contentView的位置复原.
下面就以我做的一个应用为例, 先来看一下cell的布局:
实现动画的代理方法
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if (![self.indexSet containsObject:indexPath]) { [self.indexSet addObject:indexPath]; UIView *mainView = cell.contentView; mainView.transform = CGAffineTransformMakeRotation(-M_PI_2 / 3); mainView.transform = CGAffineTransformTranslate(mainView.transform, -500, 200); mainView.alpha = 0.5; [UIView animateWithDuration:0.7 animations:^{ mainView.transform = CGAffineTransformIdentity; mainView.alpha = 1; }]; }}这里我先检查当前的这个cell是不是已经出现过的cell, 使用一个NSSet记录已经出现过的cell
@property (strong, nonatomic) NSMutableSet *indexSet;如果还没出现过, 就开始执行动画,并把这个index插入上述集合中. 上面的两个transform确定了cell的初始位置, 先逆时针旋转15度, 再向左移500个点,向下移200个点. 当然你也可以做任何你能想象出来的动画只需要改变这里的transform即可. 然后我再把初始的透明度改为0.5, 以便产生一种透明度渐变的效果.
在animation块里, 使用CGAffineTransformIdentity(单位矩阵)把cell的位置复原, 并把透明度改为1.
运行效果如下图所示:
0 0
- [个性化你的App]iOS:实现类似于google+的tableviewcell卡片式插入效果
- Android中类似于IOS的CoverFlow效果实现源码分析
- android使用ViewPage实现Grally画廊的卡片式效果
- android 卡片翻转效果的实现
- 实现卡片翻转的动画效果
- 实现翻转卡片的动画效果
- 利用JavaScript,实现卡片切换的效果
- 自定义实现神奇的卡片切换效果
- 仿探探的卡片滑动效果-recyclerView实现
- android 实现类似于ListView的效果
- Fragment + RadioGroup 实现类似于Tab的效果
- 实现类似于阿里云的动画效果
- Swift 版本很好的卡片切换效果基于ZLSwipeableView(类似于[陌陌点点][探探])
- ios中tableViewCell的长按实现
- Shine Button动画效果 类似Tinder APP的卡片界面
- Google 的个性化主页
- Google的个性化搜索
- GOOGLE的个性化主页
- 生成器表达式
- eclipse下的web Project
- layer绘制阴影后造成的滚动卡顿
- memory 子系统
- Android基础概况
- [个性化你的App]iOS:实现类似于google+的tableviewcell卡片式插入效果
- [转]Cocos2d-X 程序是如何开始运行与结束的
- 计算机网络中的小端大端
- android手机安装无法解析文件 真机测试google device driver 无法识别手机
- AOJ - 0009 - Prime Number(素数筛法)
- Xamarin Mono For Android 4.10.01068 完整离线安装破解版(C#开发Android、IOS工具)
- camera 模组驱动优化
- 设计模式之原型模式案例代码
- jquery easyui 验证