iOS: после одной анимации все другие виды начинают анимацию - PullRequest
2 голосов
/ 23 февраля 2011

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

Например, после запуска приведенных ниже анимаций каждый раз, когда я перехожу на новую вкладку в моем приложении, все элементы пользовательского интерфейса анимируются из верхнего левого угла iphone в правильное положение. Я не указал анимации для этих элементов пользовательского интерфейса на других вкладках, и фактически даже элементы, к которым у меня нет доступа, например индикатор активности в строке состояния iPhone, начинают анимировать все самостоятельно.

Что происходит? Почему это происходит только после выполнения приведенной ниже анимации? Перед запуском этой анимации (нажатием кнопки) все остальные элементы пользовательского интерфейса на вкладках других приложений вообще не анимируются при их появлении, что является ожидаемым поведением.

- (IBAction) btnChosenPostcodeClicked:(id)sender {

  //prep animations
  startView.alpha = 1.0;
  postcodeView.alpha = 0.0;

  [self.view addSubview:postcodeView];

  [UIView beginAnimations:@"ChosenPostcodeAnimation01" context:nil];

  [UIView setAnimationDuration:animationSpeed];
  [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
  [UIView setAnimationDelegate:self]; 
  [UIView setAnimationDidStopSelector:@selector(chosenPostCodeFadeoutAnimationDone:finished:context:)];

  startView.alpha = 0.0;

  [UIView commitAnimations];

}

- (void)chosenPostCodeFadeoutAnimationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    //prep animations
    postcodeView.alpha = 0.0;

    [UIView beginAnimations:@"ChosenPostcodeAnimation02" context:nil];

    [UIView setAnimationDuration:animationSpeed];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];

    CGRect newRect = CGRectMake(42, 157, 239, 180);
    imvBubble.frame = newRect;

    postcodeView.alpha = 1.0;

}

1 Ответ

3 голосов
/ 23 февраля 2011

Вам не хватает

[UIView commitAnimations];

в selectedPostCodeFadeoutAnimationDone, поэтому абсолютно все, что вы делаете, становится частью анимации!

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