如何使我的单元格的 imageView 属性一个接一个地飞起来?
我现在可以让它们飞进来,但只能一次。
做这样的事情对性能有好处吗?
如何使我的单元格的 imageView 属性一个接一个地飞起来?
我现在可以让它们飞进来,但只能一次。
做这样的事情对性能有好处吗?
使用indexPath.row
计算延迟。
float animationDelay = 0.2f;
[UIView animateWithDuration:0.3f
delay:animationDelay * indexPath.row
options:0
animations:^{
cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
} completion:^{}];
这将使每一行相对于其上方的行延迟 0.2 秒。当然,这仅在您最初加载表格时才有效,但我想这就是您要制作动画的内容?当您开始滚动并加载新单元格时,您可能应该将延迟设置为零。否则图像将需要一段时间才能显示出来。
为了实现这一点,我建议引入一个BOOL
名为 ivarloadingTheFirstTime
的初始设置YES
(在init
orawakeFromNib
方法中)。然后您可以将其设置NO
为第一次显示表格的时间。在创建单元格时,您应该首先检查此变量以查看是否必须添加延迟。
我想你在这里cellForRowAtIndexPath:
。改变你的动画:
[UIView animateWithDuration: 3.0
delay: indexPath.row
options: UIViewAnimationCurveLinear
animations: ^{
cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
}
completion:^(BOOL finished) {
}];
动画将以 1 秒的间隔加载。如果您不在此函数中,请在创建单元格时为其设置标签,并将该标签放入延迟中。
也许设置一个方法,其中有一个 for 循环贯穿每个单元格并在每次循环中运行动画?关于性能,我不知道。我不认为它对性能有好处,特别是如果有很多细胞,但你总是可以尝试并找出答案!:)