iphone - 动画整数增加并停止在特定数字上

标签 iphone ios xcode cocoa-touch

我有一个计数,我正在使用带有角标(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/

相关文章:

iphone - UITableView 上有多个图像

ios - Cell 和 TextField 未在 UITableView 中按顺序显示

iphone - 如何使用 autoresizingmask 来阻止 UITableViewCell 的组件在编辑时消失? (iPhone/iPad)

iphone - 如何跟踪 UITableView 中所有选定单元格的索引

iphone - 圈养网络 : CNSetSupportedSSIDs usage

ios - 在您的个人 iPhone 上开发应用程序 - 安全吗?

javascript - 如何在 Android/iOS 上的 webview/移动浏览器中最好地预缓存视频?

ios - 什么时候必须将框架和库链接到 XCode 项目?

ios - 每次 Plist 文件都会被覆盖

ios - 使用Xcode重置证书