仿58同城UITableViewCell动画

之前看58同城APP有一个页面中Cell依次从右向左移动,今天试着做了下。

在做的过程中也遇到了几个小的问题,也算是注意点吧。

1.Cell出现时每个Cell的动画时间一样,导致没有依次移动的效果。

根据IndexPath来设置Cell动画时间,担心时间增大时最后面的cell会出现的很慢,想着让indexPath%20这样来解决,但决定效果不太理想, 所以就还是直接用Indexpath来设置动画时间

2.复用重新加载时cell起始点总是在TableView的(0,0)点

之前以为Cell的父视图不是tableView(具体是什么我也不清楚),设置cell动画时将Cell的Y设为0了,这就导致上面的问题,应该根据IndexPath和每个RowHeight来计算Y的位置。

3.cell再次出现时也会有动画,向上滑动时最上面的先出来,稍下面的后出来

想着让Cell动画只执行一次这样就不会导致cell动画混乱。

4.代码

//
//  ViewController.m
//  tableViewCell
//
//  Created by City--Online on 15/11/9.
//  Copyright © 2015年 City--Online. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>

@property (nonatomic,strong) UITableView *tableView;

@property (nonatomic,strong) NSMutableArray *showedIndexPaths;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    _showedIndexPaths=[[NSMutableArray alloc]init];
    _tableView=[[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
    _tableView.delegate=self;
    _tableView.dataSource=self;
    _tableView.tableFooterView=[[UIView alloc]initWithFrame:CGRectZero];
    _tableView.tableHeaderView=[[UIView alloc]initWithFrame:CGRectZero];
    [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    [self.view addSubview:_tableView];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 50;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.textLabel.text=[NSString stringWithFormat:@"123abc%ld",indexPath.row];
    return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    //indexpath第一次加载的有动画  否则没有
    if ([_showedIndexPaths containsObject:indexPath]) {
        return;
    }
    else
    {
        [_showedIndexPaths addObject:indexPath];
        cell.frame=CGRectMake(self.view.bounds.size.width, indexPath.row*[_tableView rectForRowAtIndexPath:indexPath].size.height, cell.bounds.size.width, cell.bounds.size.height);
        [UIView animateWithDuration:(indexPath.row)*0.05 animations:^{
            cell.frame=CGRectMake(0, indexPath.row*[_tableView rectForRowAtIndexPath:indexPath].size.height, cell.bounds.size.width, cell.bounds.size.height);
        }];

    }
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 50;
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

5.效果

时间: 2024-10-18 01:22:47

仿58同城UITableViewCell动画的相关文章

ThinkPHP仿58同城一站多城市路由配置技巧及二级域名部署技巧

ThinkPHP在PATHINFO的URL模式下,URL的格式类似于http://www.domain.com/appName/module/action 即:http://www.domain.com/分组名/模块名/方法名 或者:http://www.domain.com/模块名/方法名 然而在有些类似于58同城这样的应用中,需要分城市展示不同的页面内容,我们希望在网站域名后面紧跟一个城市目录,也即这种格式: http://www.domain.com/城市名/模块名/方法名,根据不同的城市

gitHub-高仿58同城加载动画

导入方式: /build.gradle repositories { maven { url "https://jitpack.io" } } /app/build.gradle dependencies { compile 'com.github.zzz40500:android-shapeLoadingView:1.0.3.2' } 使用方式: 直接在xml布局文件上引入即可,动画会自动加载 <RelativeLayout xmlns:android="http:/

仿58上市公司(PC站+手机站)网站源码

该源码是仿58上市公司(PC站+手机站)网站源码,2014最新仿58同城上市公司源http://码 多城市分类信息源码带wap,安装文件:.访问 /install.php进行安装,出现数据库连接失败的问题修改:\data\mysql_config.php修改里面的数据库文件 后台登录地址你的网址/admin/index.php 后台帐号密码admin<ignore_js_op> <ignore_js_op> 详细说明:http://php.662p.com/thread-581-1

android动画深入解析--仿58底部导航的item动画

我们在开发android的过程中,合理使用动画能够提高用户体验,带给用户耳目一新的感觉.因此我们应该掌握android的动画使用.我在开发的过程中,很少自己写动画,在github搜基本可以满足要求,但是本着打破砂锅问到底的小强精神,知其然更要知其所以然,我决定还是好好看看文档,深入的学习一下动画吧,我始终相信在复杂的动画也是有简单的动画构成的,学好基本功.从简单到复杂. 首先我去看看了官方的文档,大概要学的东西就是这些. AccelerateDecelerateInterpolator Acce

58同城加载动画的实现( Android属性动画)

最近看了58同城新版 app ,里面还是做了很多动画特效,其中我看到加载数据时的一个加载动画比较好玩,就试着做了一下,先一起来看看效果 很多人看了这个效果图,第一个疑问就是底下的阴影部分是如何实现的?其实如果真要自己动手实现的话,这个问题反而不是问题,而真正有困难的是,如何控制这个图片上升的时候速度减慢,而下降的时候速度加快,当然这个问题只有在动手做的过程中才会发现. 这里还是按步骤来实现 1.实现整个 LoadingView的布局 public class LoadingLayout exte

58同城2015校招笔试、一面、二面经历

10.18 宣讲 58宣讲时间真是安排的晚...19.30开始,我6.30就到了..整整放了1个小时不重复的视频.....我听完他们CSO对行业和公司的介绍就走了.感觉58可能是o2o的下一个爆发点.感觉蛮有前景的.宣讲会也是和小米的宣讲差不多,过道上都挤满了人这种.我个人还是比较些向往去58的.个人感觉对于O2O,58算是赶了个早集..把最脏最累的活给做了..反而是美团,大众点评这种抓住了热点...当然,未来的大趋势也是O2O,就看58能不能赶上这趟快车了. 10.19 笔试 昨天的唯品会和中

秉持H2H理念,58同城如何在移动互联网时代开拓市场

移动互联网时代汹涌而来,Human to Human的这一时代落点会给58同城带来怎样的前景?BAT入驻生活服务领域,58同城如何在压力中实现自己的以人为本之路,将H2H的理念贯彻,让生活更简单的企业定位得以实现? 一.              纵观互联网的发展,变革就是以人为中心 纵观我国不可撼动的BAT,百度致胜的是人与信息,腾讯致胜的是人与社交,阿里致胜的则是人与商品.那么作为移动互联网正在迅速崛起,人与人之间联系日渐加深的移动互联网时期,生活服务的便利性逐渐被人们重视起来,嘀嘀和快的之

ToastMiui【仿MIUI的带有动画的Toast】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 仿MIUI的带有动画的Toast 效果图 代码分析 ToastMiui类基于WindowManager 为了和Toast用法保持一致,ToastMiui类中也使用了makeText.show.setGravity.setText方法.方便在项目中直接替换Toast. 使用步骤 一.项目组织结构图 注意事项: 1.  导入类文件后需要change包名以及重新import R文件路径 2.  Values目录下的文件(strings.xml

媳妇熬成婆?分类信息之上 58同城打算干点别的

经过近一年时间的频繁投资之后,近期58同城进行了大规模的组织架构调整,此举意在向业界展示58同城的未来发展方向,同时也显露了姚劲波的野心.另外,让58可喜的是,伴随组织架构调整而来的还有一份超预期的亮眼财报,这在提升资本市场信心的同时也抵挡了不少质疑之声. 10亿美元投资并购目标已完成1/3 此前,包括58同城.赶集网在内的分类信息网站频繁招到业界质疑,一来认为分类信息市场已步入市场瓶颈期,未来成长空间不足:二来以分类信息的营收能力,企业难有更大作为,而且获取流量的成本较高,用户需求频次相对较低