1

我在这里看到了很多类似的问题,但没有一个有我想要的。无论如何:

我正在为地图上的注释设置动画以上下移动。我通过在它的drawRect中调用这个函数来做到这一点:

    - (void) wiggle {
      [UIView animateWithDuration:0.45 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
          [self.subView setFrame:CGRectMake(self.subView.frame.origin.x, self.subView.frame.origin.y+WIGGLE_DISTANCE, self.subView.frame.size.width, self.subView.frame.size.height)];
      } completion:^(BOOL finished) {
        if (finished)
          [UIView animateWithDuration:0.45 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
            [self.subView setFrame:CGRectMake(self.subView.frame.origin.x, self.subView.frame.origin.y-WIGGLE_DISTANCE, self.subView.frame.size.width, self.subView.frame.size.height)];
          } completion:^(BOOL finished) {if (finished) [self wiggle]; }];
      }];
    }

简而言之,它正在为“子视图”设置动画,当它完成时,动画向下,当它完成时,调用自身(继续摆动)。

这工作正常,直到我切换标签。当我返回此选项卡时,没有动画。我尝试在 viewController 的“viewDidAppear”中的每个视图上调用“setNeedsDisplay”,但调用 drawRect 失败。于是我尝试直接从 viewController 的 'viewDidAppear' 调用 'wiggle',并且该函数确实被调用了,但它只是没有动画。有任何想法吗?

谢谢!

4

0 回答 0