【问题标题】:iOS - Show splash screen every time app opensiOS - 每次应用打开时显示启动画面
【发布时间】:2014-11-28 14:38:44
【问题描述】:

我知道这是糟糕的用户体验,但是客户要求我在每次用户打开应用程序时显示 2 秒的初始屏幕。

我已经尝试通过 AppDelegate 实现这一点:

  • 创建启动画面视图控制器的实例变量 在应用程序中:didFinishLaunchingWithOptions: 方法,和 将其视图的 alpha 设置为 0。

  • 然后在 applicationWillEnterForeground: 我将 alpha 设置为 1 希望每次用户打开时都会显示启动画面 应用程序,然后在 2 秒后将 alpha 设置回 0。

现在,这确实有效,但不正确。当应用打开时,主 UI 会立即显示,然后会显示初始屏幕。

当然,这不是我们想要的,因为启动画面应该显示在主 UI 之前。

我试图说服客户取消这个,但是有谁知道如何正确实施它(以防他们完全坚持自己想要它)?

来自应用程序:didFinishLaunchingWithOptions:

_tabBarController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"TabBarController"];
[[self window] setRootViewController:_tabBarController];
[_tabBarController setDelegate:self];


_loadingViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoadingView"];
[[_loadingViewController view] setAlpha:0.0f];
[_loadingViewController willMoveToParentViewController:_tabBarController];
[_tabBarController addChildViewController:_loadingViewController];
[_loadingViewController didMoveToParentViewController:_tabBarController];
[[_tabBarController view] addSubview:_loadingViewController.view];

来自应用程序WillEnterForeground:

[[_loadingViewController view] setAlpha:1.0f];

[self performSelector:@selector(removeLoadingView) withObject:nil afterDelay:2.0];

【问题讨论】:

  • 你有默认的启动图像,这对你的客户来说还不够吗?
  • 您的应用在进入后台并返回活动状态后是否应该返回到之前的状态?
  • 相信我,我已经尝试过了,但是他们坚持希望用户每次打开应用时都能看到启动画面。
  • 老实说,您可以向他们展示有关启动画面的 Apple 人机界面指南,然后向他们展示 Apple 审查规则,其中规定应用程序必须遵守这些指南,否则它们将被拒绝,因为这是完全正确的。你有理由让客户改变主意,如果他们想要在实际的应用商店中获得它,他们将无法拥有它,很简单。我与客户有很多分歧,但一旦你向他们展示 Apple 指南,他们就会放弃它,因为他们希望 a 出现在商店中。
  • 请显示一些代码。

标签: ios iphone splash-screen


【解决方案1】:

这是一种解决方法,但您可以随时尝试:

在根视图控制器上放置一个 UIImageView。 (或使用初始屏幕图像创建一个新的) 移除真正的飞溅后,将显示此视图,然后您可以使用您选择的效果将其移除。

【讨论】:

  • 它应该在以后每次打开应用程序时显示(按主页按钮,重新打开应用程序,按主页按钮,重新打开应用程序...)。
  • 正是如此,您应该能够随时显示视图,因为它不是真正的启动画面。它只是一个可以添加和删除的视图。
  • 嗯,对我来说它有效:/你有没有尝试过 - (void)applicationDidBecomeActive:(UIApplication *)application ?
  • 是的,它和我原来的问题中提到的一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2012-12-12
  • 2011-11-28
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多