Анимация влияет на каждый вид даже после вызова commitAnimation - PullRequest
0 голосов
/ 28 января 2012

Я занимаюсь разработкой игры 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 Ответ

1 голос
/ 28 января 2012

Вы должны установить уникальное значение animationID в методе beginAnimations:context:.
См. Официальный документ

Также этот документ содержит:

Использование этого метода не рекомендуется в iOS 4.0 и более поздних версиях.Вместо этого вы должны использовать методы анимации на основе блоков, чтобы указать свою анимацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...