【问题标题】:How to show a "Loading..." gif image above the Splash image in objective c?如何在目标 c 中的 Splash 图像上方显示“正在加载...” gif 图像?
【发布时间】:2012-05-15 12:10:55
【问题描述】:

我想在应用加载数据时在初始屏幕上显示 GIF 图像。

我的初始图像至少显示了大约 3 或 4 秒,这就是为什么我想在初始图像上显示加载文本(例如 gif 图像),以便用户认为该应用正在加载。

【问题讨论】:

  • HIG 明确表示您 1) 不应将 启动图像 用作启动画面,并且 2) 应尽快启动。您可以在应用程序启动后显示加载程序,但不要在应用程序启动后尝试显示启动图像。这很糟糕,即使您正在加载数据。

标签: objective-c ios splash-screen


【解决方案1】:

只需为您的初始图像添加一个标签和一个NSTimer,它会定期更改其文本,如下所示

splash = [[UIImageView alloc] initWithFrame:self.window.frame];
splash.image = [UIImage imageNamed:@"splash"];
[self.window addSubview:splash];

这是我用来显示启动画面的代码,然后

NSTimer *loading = [[NSTimer alloc]init];
[loading performSelector:@selector(YOUR_SELECTOR) withObject:YOUR_LABEL afterDelay:0.3f];

其中YOUR_SELECTOR 是设置标签文本的方法,YOUR_LABEL 是设置文本的标签

编辑 对不起NSTimer 实际上我使用了带有文本加载的活动指示器... 在application:didFinishLaunchingWithOptions:方法中

它的代码是

splash = [[UIImageView alloc] initWithFrame:self.window.frame];
splash.image = [UIImage imageNamed:@"splash"];    
[self.window addSubview:splash];
hud = [[MBProgressHUD alloc]initWithView:splash];
[splash addSubview:hud];
hud.labelText = @"Loading...";
[hud show:YES];
[self performSelector:@selector(Load_FirstView) withObject:nil afterDelay:3];
[self.window makeKeyAndVisible];

Load_FirstView方法如下

-(void)Load_FirstView
{
    [splash removeFromSuperview];
    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
    masterViewController.managedObjectContext = self.managedObjectContext;
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
}

【讨论】:

  • 这假设窗口是可见的,OP 没有指定何时加载数据,我怀疑它是在显示主视图之前完成的,否则在整个持续时间内都不会看到启动画面。
【解决方案2】:

如果您使用 Default.png 作为初始图像,则无法对其进行动画处理。一种方法是更快地启动应用程序,然后在加载数据期间显示动画视图。所以基本上你唯一的解决方案是远离 Default.png 并使用自定义视图来代替可以动画的。

【讨论】:

  • 我正在使用 Default.png,我必须显示正在加载... gif 图像作为 iphone 中的活动指示器。
  • 这就是我的意思,如果此时您的 Default.png 始终可见,那么就无法对其进行动画处理。
  • 我不想为它制作动画。我只想在显示时在启动图像上显示一个标签。
  • 如果该标签是静态的,那么只需使用图像编辑器将其添加到图像中。
【解决方案3】:

首先使用 Default.png,然后加载一个 UIView,其中包含一个与 UIView 相同的框架的 UIImageView(整个屏幕)。将 Default.png 设置为 ImageView 的 UIImage 并根据需要添加任何控件(例如 UIActivityIndicatorView)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2015-10-21
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    相关资源
    最近更新 更多