在滚动/重绘时再次触发cellForRowAtIndexPath动画

时间:2015-03-25 14:23:33

标签: ios cocoa-touch

我单元格中的一些标签有动画外观(下面的代码)。

然而,一旦屏幕上有更多的单元格而不是空间,滚动之前插入的单元格将重新绘制,并再次触发它们的动画。

如何防止此行为?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"results"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"results"];
    }
   ...
    // Animations
    nameLabel.alpha = 0;
    nameLabel.transform = CGAffineTransformMakeTranslation(-80, 0);
    priceLabel.alpha = 0;
    priceLabel.transform = CGAffineTransformMakeTranslation(+100, 0);
    cell.imageView.alpha = 0;
    cell.imageView.transform = CGAffineTransformMakeTranslation(-300, 0);

    [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        nameLabel.alpha = 1;
        nameLabel.transform = CGAffineTransformMakeTranslation(0, 0);
        priceLabel.alpha = 0.6;
        priceLabel.transform = CGAffineTransformMakeTranslation(0, 0);
        cell.imageView.alpha = 1;
        cell.imageView.transform = CGAffineTransformMakeTranslation(0, 0);
    }completion:^(BOOL Finished){}];

    return cell;
}

1 个答案:

答案 0 :(得分:0)

也许您可以在单元格显示而不是collectionView:willDisplayCell:forItemAtIndexPath:时调用cellForRowAtIndexPath:中的单元格设置动画。