即使在调用commitAnimation之后,动画也会影响每个视图

时间:2012-01-28 08:18:29

标签: iphone objective-c ios animation

我正在开发一款Cocos2D游戏。在舞台上,展示一个UIView,为用户提供要执行的任务列表。我使用动画向上或向下移动文本字段。我的代码如下。

        [textField setFrame:CGRectMake(textField.frame.origin.x, textField.frame.origin.y, textField.frame.size.width, textField.frame.size.height)];
        [inviteButton setFrame:CGRectMake(inviteButton.frame.origin.x, inviteButton.frame.origin.y, inviteButton.frame.size.width, inviteButton.frame.size.height)];
        [headingLabel setFrame:CGRectMake(headingLabel.frame.origin.x, headingLabel.frame.origin.y, headingLabel.frame.size.width, headingLabel.frame.size.height)];

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3];
        [UIView setAnimationDelegate:self];
        [textField setFrame:CGRectMake(textField.frame.origin.x, textField.frame.origin.y-50, textField.frame.size.width, textField.frame.size.height)];
        [inviteButton setFrame:CGRectMake(inviteButton.frame.origin.x, inviteButton.frame.origin.y-50, inviteButton.frame.size.width, inviteButton.frame.size.height)];
        [headingLabel setFrame:CGRectMake(headingLabel.frame.origin.x, headingLabel.frame.origin.y-30, headingLabel.frame.size.width, headingLabel.frame.size.height)];
        [UIView commitAnimations];
        [self.view.layer removeAllAnimations];

问题是,即使在用户完成并按下取消按钮从超级视图中删除此视图后,包含UIAlertView的每个视图以及在删除该视图后出现在我的地图中的其他子视图都会受到我以前移动的动画的影响文本字段和标签向上或向下。 UIAlertView正在使用相同的动画来显示,所以正在发生其他子视图。谁能告诉我为什么会这样?

最好的问候

1 个答案:

答案 0 :(得分:1)

您必须在animationID方法中将beginAnimations:context:设置为唯一值 See the official doc

该文件还指出:

  

在iOS 4.0及更高版本中不鼓励使用此方法。您应该使用基于块的动画方法来指定动画。