2011-05-02 159 views
0

我正在构建一个iPhone应用程序,需要在启动时下载许多HTTP请求。这意味着加载需要相当长的时间。 HTTP请求和响应在viewController的viewDidLoad方法中处理。如何在加载iphone应用程序时显示图像?

在此过程中,屏幕为白色。我想知道在这个过程中是否有简单的方法来显示图像,而不是只是白屏。

回答

0

正如在许多地方所提到的,你不想在viewDidLoad中做这种工作,因为那是你的主UI线程。在另一个线程中执行此操作,并在另一个线程上加载内容时使用主线程显示活动指示器或进度条。

0

最简单的方法是这样的(虽然我不会推荐它,它IIRC “工程”):

  1. 显示的东西在你的viewDidLoad开始(如UIProgressView)
  2. 电话[[NSRunLoop currentRunLoop] runUntilDate:[NSDate的timeIntervalSinceNow:0.1],这使得屏幕更新(注:我没打字那些在Xcode中,方法名是把我的头顶部)
  3. 做你的冗长的工作

...但它会在运行时冻结整个UI。正确的方法是在后台线程中运行图像加载,并将其完全移出“viewDidLoad”方法。例如使用

performSelectorInBackground: ... 

...这将让你通过一个@选择器命名你想做所有加载工作的“其他”方法。这样设计起来非常容易,你不需要知道任何有关NSThread的信息就可以使它工作。

0

可以显示图像的应用程序启动和加载:

单击该项目,并与方位的应用程序图标和启动画面应该出现的屏幕;将您的加载屏幕拖到图像容器中,其中的“启动图像”用于正常显示,第二个用于视网膜显示。这两个应在您的应用加载时显示。祝你好运!

+1

没错,虽然这里一个危险是,当它是一个真正的手机上运行,​​如果时间过长启动苹果可能会自动杀死你的应用程序。但是在测试时你不会看到这一点,因为当你运行开发人员构建时,自动终止行为会被静默地禁用。 – Adam 2011-05-02 17:45:18

+0

嗯...我从来没有想到这一点。感谢你让我现在:D我想起你的coment事业'这件事很重要。 – DailyDoggy 2011-05-03 16:59:12

0

使用HUD像ATMHud

// show hud 
[hud setCaption:@"Working..."]; 
[hud setActivity:YES]; 
[hud show]; 

// ...do your HTTP requests here... 

// update hud 
[hud setCaption:[NSString stringWithFormat:@"done with %@",result]]; 
[hud setActivity:NO]; 
[hud setImage:[UIImage imageNamed:@"19-check"]]; 
[hud update]; 
[hud hideAfter:2.0]; 

联的项目有,你可以运行,看到它的外观一个简单的例子。

相关问题