我有一个计数,我正在使用带有角标(Badge)的单元格。我想要的是当我得到这个计数时,将角标(Badge)编号设置为 0,然后设置从 0 到某个计数的递增动画。
这是我试过但没有奏效的方法:
for (int i = 0 ; i<=item.count; i++) {
int64_t delayInSeconds = .1f;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[UIView animateWithDuration:0.1f animations:^{
cell.badgeString = [NSString stringWithFormat:@"%d",i];
}];
NSLog(@"%@",cell.badgeString);
});
}
它没有动画。我在 tableView:cellForRowAtIndexPath
中执行此操作,并在返回单元格之前执行此操作,所以这就是问题所在。
谢谢!
最佳答案
所以有几件事我会做不同的......
你是对的,cellForRow 是执行此操作的错误位置。尝试触发 willDisplayCell 中的动画。我的意思是触发器,设置初始值,然后在下一个运行循环中使用 [cell performSelector:@selector(startAnimation) withObject:nil afterDelay:0] 开始动画; 或类似的东西。
此外,在 for 循环中调用 dispatch 不是一个好主意。您可以设置一个带有完成 block 的动画 block ,然后触发相同的动画 block ,每次从 item 获取新值。您需要在某处跟踪当前值。
您可能想要一个包含任何对象项的自定义单元格。在 cellForRow 中设置它。在 prepareForReuse 中取消你的动画。动画代码可以放在自定义单元格的方法中,在我上面的示例中它称为 startAnimation。
关于iphone - 动画整数增加并停止在特定数字上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017812/