0

如何使我的单元格的 imageView 属性一个接一个地飞起来?

我现在可以让它们飞进来,但只能一次。

做这样的事情对性能有好处吗?

谢谢!

4

3 回答 3

4

使用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(在initorawakeFromNib方法中)。然后您可以将其设置NO为第一次显示表格的时间。在创建单元格时,您应该首先检查此变量以查看是否必须添加延迟。

于 2012-09-13T15:09:21.653 回答
2

我想你在这里cellForRowAtIndexPath:。改变你的动画:

[UIView animateWithDuration: 3.0 
                      delay: indexPath.row
                    options: UIViewAnimationCurveLinear 
                 animations: ^{
                     cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
                 } 
                 completion:^(BOOL finished) {

                 }];

动画将以 1 秒的间隔加载。如果您不在此函数中,请在创建单元格时为其设置标签,并将该标签放入延迟中。

于 2012-09-13T15:10:09.613 回答
0

也许设置一个方法,其中有一个 for 循环贯穿每个单元格并在每次循环中运行动画?关于性能,我不知道。我不认为它对性能有好处,特别是如果有很多细胞,但你总是可以尝试并找出答案!:)

于 2012-09-13T15:10:08.057 回答