我在按钮操作中实现加载程序,但是当我单击按钮时,需要3到5秒才能开始加载。我使用两个控制器来实现loader-UIImage + animatedGIF.h来使用gif图像和MBProgressHUD.h来实现进度时间。我不知道如何减少启动加载程序所需的初始时间。 我正在使用此代码来实现loader -
NSURL *url = [[NSBundle mainBundle] URLForResource:@"loadingg" withExtension:@"gif"];
self.loader.image = [UIImage animatedImageWithAnimatedGIFData:[NSData dataWithContentsOfURL:url]];
float progress = 0.0f;
while (progress < 1.0f) {
progress += 0.01f;
// HUD.progress = progress;
usleep(50000);
}
[NSTimer scheduledTimerWithTimeInterval:progress target:self selector:@selector(abcd) userInfo:nil repeats:NO];
答案 0 :(得分:0)
原因是因为在您从委托中返回之前它不会显示您的图像,并且由于您使用while循环阻止委托5秒钟,您会遇到您描述的行为
答案 1 :(得分:0)
我必须假设主线程上usleep(50000)
不。
如果是,则有 5秒延迟。睡觉主线程就是这样:等等。正确的方法是异步加载。
阅读@bbum建议,了解何时适合调用usleep:what is the difference among sleep() , usleep() & [NSThread sleepForTimeInterval:]?