如何在加载iPhone应用程序时显示图像?

时间:2011-05-02 17:23:46

标签: iphone objective-c

我正在构建一个需要在启动时下载许多HTTP请求的iphone应用程序。意味着需要相当长的时间才能加载。 HTTP请求和响应在我的viewController的viewDidLoad方法中处理。

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

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是最简单的方法(虽然我不推荐它,IIRC它“有效”):

  1. 在viewDidLoad的开头显示内容(例如UIProgressView)
  2. 调用[[NSRunLoop currentRunLoop] runUntilDate:[NSDate timeIntervalSinceNow:0.1]],它允许屏幕更新(注意:我没有在Xcode中输入那些,方法名称不在我的脑海中)
  3. 做你漫长的工作
  4. ...但是在运行时会冻结整个UI。正确的方法是在后台线程中运行图像加载,并将其完全移出“viewDidLoad”方法。例如使用

    performSelectorInBackground: ...
    

    ...这将允许您传入一个@selector,命名您想要执行所有加载工作的“其他”方法。这是非常容易luanch - 你不需要知道任何有关NSThread的知识,以使其工作。

答案 2 :(得分:0)

您可以在应用启动并加载时显示图片:

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

答案 3 :(得分:0)

使用像ATMHud这样的hud:

// 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];

链接的项目有一个简单的示例,您可以运行它以查看它的外观。

答案 4 :(得分:0)