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]; }];
      }];
    }

つまり、「subView」を上にアニメーション化し、それが終了すると下にアニメーション化し、終了すると自分自身を呼び出します (小刻みに動き続けるため)。

タブを切り替えるまで、これは正常に機能します。このタブに戻ると、アニメーションはありません。viewController の「viewDidAppear」でこれらの各ビューで「setNeedsDisplay」を呼び出してみましたが、drawRect の呼び出しに失敗しました。そこで、viewController の「viewDidAppear」から直接「wiggle」を呼び出してみました。関数は呼び出されますが、アニメーション化されません。何か案は?

ありがとう!

4

0 に答える 0