iOS:在一个动画之后,所有其他视图都开始动画

时间:2011-02-23 15:28:42

标签: iphone ios animation

我有一个非常奇怪的问题。在我开发的iOS应用程序中,在运行下面的动画后,我发现UI的各种其他元素现在只要它们出现就会生成动画。

例如,一旦运行下面的这些动画,每次我导航到我的应用程序中的新选项卡时,所有UI元素都会从iphone的左上角动画到正确的位置。我在其他标签中没有为这些UI元素指定动画,事实上,即使是我无法访问的元素,比如iPhone状态栏中的活动指示器,也会开始自行制作动画。

发生了什么事?为什么只有在执行下面的动画后才会发生这种情况?在运行此动画之前(按下按钮)其他应用程序选项卡中的所有其他UI元素在出现时都不会显示动画,这是预期的行为。

- (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 个答案:

答案 0 :(得分:3)

你错过了

[UIView commitAnimations];

在selectedPostCodeFadeoutAnimationDone中,所以你所做的一切都成为了动画的一部分!