如果视图消失,uiview animate的完成块从未调用过

bop*_*opa 8 iphone uiview uiviewanimation ios

我注意到一些奇怪的行为.当我开始动画并更改视图(视图不会被解雇!)时,完成处理程序永远不会被调用.

[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"]];                    
                     }];
}
Run Code Online (Sandbox Code Playgroud)

这有什么解决方案吗?

she*_*hem 5

不知道在哪里写它,但我得到了你所拥有的相同的东西,但在我的情况下,有时会调用完成块.这可能是一回事.
我发现,如果在动画块没有什么是animate-例如,如果您设置的α= 0的UIView是阿尔法已经是0,否则你设置的内容偏移UIScrollView的相同内容的偏移量(如在我的情况) ,没有调用完成块.


Zev*_*erg -1

将您的呼叫[myView setHidden:YES]从一个animations区块移至另一个completion区块。我认为这可能会有所帮助。您仍然可以在块期间将 alpha 设置为myView0 animation(如果您希望它淡出),或者在整个调用之前将其设置为-[UIView animateWithDuration:delay:options:animations:completion:]0(如果您希望它立即消失)。