我在这里看到了很多类似的问题,但没有一个问题符合我的要求。 反正:
我正在动画地图上的注释来上下移动。我通过在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',并且函数DOES被调用,但它只是没有动画。有什么想法吗?
谢谢!