UITableViewCell动画错误

时间:2012-11-27 21:04:43

标签: ios uitableview animation cell

我写了一个自定义UITableViewCell - 图像视图,按钮和三个标签,现在我正在尝试添加一些动画。因此,一旦我点击按钮,它就会消失,旋转器会替换按钮。两秒钟后,细胞被红色覆盖,随着细胞的子视图淡入,然后指示器被移除并且红色覆盖开始逐渐消失。我之前删除的按钮也会消失。

(我不能用更好的方式说出来:P)

方法是:

-(void)rentButtonPressed:(id)sender
{

    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    [indicator startAnimating];
    indicator.center = self.rentButton.center;

    [UIView animateWithDuration:0.2
                     animations:^{self.rentButton.alpha = 0.0;}
                     completion:^(BOOL finished){
                         [self.rentButton removeFromSuperview];
                         [self addSubview:indicator];
                     }
     ];

    UIView *overlay = [[UIView alloc] initWithFrame:self.backgroundImage.frame];
    overlay.alpha = 0.0;
    overlay.backgroundColor = [UIColor redColor];
    [self.contentView addSubview:overlay];

    [UIView animateWithDuration:0.4
                          delay:2.0
                        options:UIViewAnimationCurveEaseInOut
                     animations:^{
                             [indicator removeFromSuperview];
                             overlay.alpha = 0.4;
                         }
                    completion:^(BOOL finished){
                        [UIView animateWithDuration:0.4
                                        animations:^{ overlay.alpha = 0.0; }
                                        completion:^(BOOL finished)
                                        {
                                            [overlay removeFromSuperview];
                                        }
                        ];

                        [self.contentView addSubview:self.rentButton];
                        [UIView animateWithDuration:0.4 animations:^{ self.rentButton.alpha = 1.0;}];
                        [self.delegate didTryToRentMovieAtCell:self];
                    }
    ];

}

因此代码会淡出按钮,将其替换为微调器并在红色覆盖中淡入淡出。问题是,红色叠加层不会消失,但与按钮一样消失,而不是淡入,只是出现。

1 个答案:

答案 0 :(得分:2)

在动画期间,您将通过添加和删除子视图来更改视图层次结构。 UIView类方法animateWithDuration:animations:completion仅用于动画视图中的属性更改,而不是用于更改视图层次结构。

尝试使用UIView类方法transitionWithView:duration:options:animations:completion:而不是,并使用单元格的内容视图作为“容器”。

本文档有助于区分动画视图属性更改和动画视图过渡,特别是“更改视图的子视图”部分: http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/animatingviews/animatingviews.html