情况是这样的:
一个UITableView, 每个Cell的内容是我自定义的 viewA viewA上面有很多的动画, 我需要添加NSTimer来做动画, 由于TableView的复用机制, 我添加的动画会不断开启, 没有停止, 动画会执行越来越多.
解决办法:
在配置cell的时候开始动画, 然后在cell结束显示的时候停止动画
查找cell结束显示的代理方法, 打开dash 在ios分类中搜索 uitableviewdelegate, 找找所有的代理方法, 发现在Tracking the Removal of Views这个类别中有一个代理方法叫: - tableview:didEndDisplayingCell:forRowAtIndexPath: 这个方法就是我们所需要的, 在个方法里面调用停止动画的方法即可
关键代码如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { RecentlyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; Feed * feed = (Feed *)self.data[indexPath.row]; cellviewA.feed = feed; [cell.stageView performSelector:@selector(startAnimation) withObject:nil afterDelay:1]; return cell; } - (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { RecentlyCell * recentlyCell = (RecentlyCell *)cell; [recentlyCell.viewA stopAnimation]; }
相关推荐
简单的nstimer时间计算器,上面有暂停,清零等简单的功能,免费下载
详细讲解CADisplayLink和NSTimer的区别。
详细介绍CADisplayLink,CADisplayLink和NSTimer的区别。
ios计时器NSTimer的使用 倒计时10秒,计时器 /* NSTimer scheduledTimerWithTimeInterval
ios NSTimer应用demo 。iphone6.1 测试通过。具体demo截图和说明在:http://blog.csdn.net/donny_zhang
NSTimer-Blocks, 在NSTimer上提供块功能,简单分类 自述文件NSTimer上非常简单的类别,它可以使用块。工作原理我认为如果你使用的是一个块,你可以能不需要将任何用户指定的对象传递到计时器。 你只要从街区里得到你...
NStimer 定时器 iOS 倒计时 objective-c
是一个关于NSTimer类的小计时器,主要是为了对比两个类方法创建定时器的区别,以及它们会受到滚动事件的影响,该如何解决这个问题
定时器
关于定时器在tableview上的复用问题
MKImpulse是一个用来代替系统NSTimer的高精度脉冲器 系统的NSTimer是添加到Runloop中的, 在系统繁忙时会造成...如果有什么疑问, 可以进入项目的Gitter聊天室和作者直接进行问答! 如果你感觉写的还不错, 请点击Star!
详细的NSTimer类的使用 文档说明 是开发的很好的帮助文档
常见NSTimer的消毁方法,用一种优雅的方式销毁NSTimer
模仿腾讯新闻图片频道的图片浏览的幻灯片效果.
iOS 中的 NSTimer.pdf
IOS应用源码——nstimer.zip
Swift:UIProgressView+NSTimer+UIstepper
我们都知道NSTimer采用target-action的方式,通常target又是类本身,我们为了方便又把NSTimer声明为属性变量,这样就难免会造成循环引用(需要反复执行计时任务时,如果是单次的任务就不会造成循环引用)。...
IOS 中NSTimer定时器的使用 NSTimery 定时器,主要用于进行定时执行指定方法,常用场景如:获取验证码的按钮倒计时;图片轮播定时。 1 使用注意事项: 1.1 倒计时时间间隔(时间单位是秒) 1.2 指定的执行方法 1.3...