setHidden:有不必要的延迟

Tim*_*eit 3 iphone objective-c uikit grand-central-dispatch ios

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

被调用的方法,是应该隐藏UIActivityIndicatorView的(停止启用自动隐藏)和停止它UIImageViewbadIndicator.

作为替代品,它应该显示另一个UIImageView被叫goodIndicator.

[goodIndicator setHidden:NO];
[badIndicator setHidden:YES];
[refreshIndicator stopAnimating];
NSLog(@"statussetting good should be completed");
Run Code Online (Sandbox Code Playgroud)

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

2013-05-31 20:24:57.835 app name[5948:1603] statussetting good should be completed
Run Code Online (Sandbox Code Playgroud)

我试过setNeedsDisplay在对象和父视图上调用方法,并用alpha替换hidden.仍然遇到同样的问题.

jsz*_*ski 11

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

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