setHidden:有不必要的延迟

时间:2013-05-31 18:45:00

标签: iphone ios objective-c uikit grand-central-dispatch

我目前有一个非常奇怪的错误。

一个方法被调用,它应该通过停止它来隐藏UIActivityIndicatorView(启用停止后自动隐藏)和一个名为UIImageView的{​​{1}}。

作为替代品,它应该显示另一个名为badIndicator的{​​{1}}。

UIImageView

控制台立即打印以下内容,但屏幕上发生更改大约需要三秒钟。

goodIndicator

我尝试在对象和父视图上调用[goodIndicator setHidden:NO]; [badIndicator setHidden:YES]; [refreshIndicator stopAnimating]; NSLog(@"statussetting good should be completed"); 方法,并用alpha替换hidden。 仍然遇到同样的问题。

2 个答案:

答案 0 :(得分:11)

听起来你是从后台线程调用它。与UIKit的所有交互都需要从主线程发生。尝试使用:

dispatch_async(dispatch_get_main_queue(), ^{
    [goodIndicator setHidden:NO];
    [badIndicator setHidden:YES];
    [refreshIndicator stopAnimating];
    NSLog(@"statussetting good should be completed");
});

答案 1 :(得分:2)

你需要在主线程中调用这个方法。尝试使用:

-(void)hideControls { 
    [goodIndicator setHidden:NO]; 
    [badIndicator setHidden:YES]; 
    [refreshIndicator stopAnimating]; 
    NSLog(@"statussetting good should be completed"); 
}