我在这里看到了很多类似的问题,但没有一个有我想要的。无论如何:
我正在为地图上的注释设置动画以上下移动。我通过在它的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',并且该函数确实被调用了,但它只是没有动画。有任何想法吗?
谢谢!