由于网络问题,我有可能两次调用UIView动画功能 . 不知何故,这似乎弄乱了你在完成块中得到的完成的布尔值 .
在动画期间,我将UIView移出屏幕 . 在动画结束时,它应该将我正在动画的帧设置为隐藏 . 我注意到完成块中的已完成BOOL始终设置为YES . 因此,当我第二次调用动画时,在第一次调用动画之前,它将设置为BOOL完成,即使我希望它被设置为NO,因为动画被新的调用中断了同样的动画 .
[UIView animateWithDuration:animated ? VOTE_ANIMATION_DURATION : 0.0 delay:2 options:UIViewAnimationOptionCurveEaseOut animations:^{
self.waitingView.frame = CGRectMake(self.waitingView.frame.origin.x, (-self.waitingView.frame.size.height) - WAITINGVIEW_SHADOW_HEIGHT, self.waitingView.frame.size.width, self.waitingView.frame.size.height);
} completion:^(BOOL finished) {
if (finished) {
DDLogInfo(@"set VotingView Animation is finished");
self.waitingView.hidden = YES;
}
}];
我也尝试添加以下行,但没有帮助 .
[UIView setAnimationBeginsFromCurrentState:YES];
有线索吗?
1 回答
好吧,你可以在你的类中设置一个布尔“isAnimating”属性,只有当它为FALSE时才开始动画 .
当然,只有当你不需要同时播放两次动画时,这才有效 .