[UIView animateWithDuration:0.1f
delay:0.0f
options:UIViewAnimationCurveEaseOut
animations:^(void){
[myView setHidden:YES];
myLabel.alpha = 0.0f;
someOtherView.frame = CGRectMake(130, bubbleBigRect.origin.y, 61, 65);
[button setHidden:YES];
}
completion:^(BOOL finished){
NSLog(@"Complete %d",finished);
[imageVIew setImage:[UIImage imageNamed:@"myPng.png"]];
}];
}
有没有解决方案?
答案 0 :(得分:5)
不知道在哪里写它,但我得到了你所拥有的相同的东西,但在我的情况下,有时会调用完成块。可能是一回事。
我发现如果在动画块中没有任何东西是动画的 - 例如,如果你将alpha = 0设置为uiview,alpha已经是0,或者你将内容偏移设置为UIScrollView到相同的内容偏移量(就像我的情况一样) ,没有调用完成块。
答案 1 :(得分:1)
将它放在动画块中,并在YOUR_SELECTOR方法中完成您想要完成的所有操作。你现在可以用你的观点做任何你想做的事情,并且仍然有办法在完成时执行某些事情!
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(YOUR_SELECTOR)];
答案 2 :(得分:0)
在我的情况下,我动画的视图将其帧设置为(0,-568,320,568),并且在动画之后我忘记将帧更改为其所需位置,即(0,0,320,568),因此未调用完成块。改变动画视图的框架为我完成了这项工作。所以我可以说,例如,视图没有任何显示(因为框架没有设置在可见区域)。可能不会调用完成块。
答案 3 :(得分:-1)
将您的来电从[myView setHidden:YES]
阻止移至animations
阻止。我想这可能会有所帮助。你仍然可以在completion
阻止期间将myView
的alpha设置为0(如果你想让它淡出),或者在整个animation
呼叫之前将它设置为0,如果你想让它消失的话程。