0

我创建了一个动画,完成后应该删除正在动画的图像。出于某种原因,它没有工作(即它没有删除图像)。有什么我做错了吗?:

[UIView animateWithDuration:1.8 delay:0 options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     appleView[i].frame = CGRectMake(applePosition, 400.0, 25.0, 25.0);
                 }
                 completion:^(BOOL finished){ [appleView[i] removeFromSuperview]; }];
4

3 回答 3

1

可能的原因是appleView[i]nil。在完成块中放置一个断点并检查它。

于 2012-12-07T03:57:05.500 回答
0

appleView 是局部变量还是类成员?还有什么会改变appleView吗?

完成块将在您启动动画后大约 1.8 秒运行,如果 appleView 是类成员并且发生了某些更改,您可能会删除错误的内容。尝试在局部变量中捕获 appleView[i],如下所示:

UIView *goingAway = appleView[i];
[UIView animateWithDuration:1.8 delay:0 options:UIViewAnimationOptionCurveEaseInOut
       animations:^{
           goingAway.frame = CGRectMake(applePosition, 400.0, 25.0, 25.0);
        } completion:^(BOOL finished){
           [goingAway removeFromSuperview];
        }];
于 2012-12-07T06:18:16.847 回答
0

试试这个代码..

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.8];
[UIView setAnimationTransition: UIViewAnimationOptionCurveEaseInOut forView:self.view cache:YES];
[appleView[i] removeFromSuperview];
[UIView commitAnimations];

我希望这可以帮助你...

于 2012-12-07T04:54:10.327 回答