用于CGAffineTransformMake的UIView动画无法正常工作

时间:2011-09-25 19:31:45

标签: iphone objective-c

我有一个简单的变换动画,可以向左移动UITableViewCell 70像素。在if部分,动画效果很好,我可以顺利过渡。但是,当再次调用该函数将单元格放回原始位置(即else部分)时,我得不到动画。它只是恢复正常但没有动画。我该如何解决这个问题?

 if([[slideArray objectAtIndex:indexPath.row] intValue]==0)
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.4];
        selectedCell.transform=CGAffineTransformMakeTranslation(-70, 0);
        [UIView commitAnimations];
        [slideArray replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithInt:1]];

    }

    else
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.4];
        selectedCell.transform=CGAffineTransformMakeTranslation(0, 0);
        [UIView commitAnimations];
        [slideArray replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithInt:0]];
    }

1 个答案:

答案 0 :(得分:9)

在else条件下尝试以下动画,如果你已经执行if condition ....

的翻译,这将正常工作
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.4];
    selectedCell.transform=CGAffineTransformMakeTranslation(70, 0);
    [UIView commitAnimations];
    [slideArray replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithInt:0]];

如果以上代码不适合您,请尝试以下

[UIView animateWithDuration:0.5 
                  delay:0
                options:UIViewAnimationOptionBeginFromCurrentState
             animations:(void (^)(void)) ^{
                 myImageView.transform=CGAffineTransformMakeTranslation(-70, 0);
             }
             completion:^(BOOL finished){
                 myImageView.transform=CGAffineTransformIdentity;
             }];
  [slideArray replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithInt:0]];

让我知道是否有任何问题.. 问候。