4

我为我的 iPad 应用程序使用Default.png文件。它显示正确,但我找不到修改启动画面持续时间的方法。有人有什么建议吗?谷歌有许多网站展示了如何设置开始屏幕,但找不到解决我的问题的方法。

4

7 回答 7

17

启动画面的人机界面指南的第一条规则是:不要使用启动画面。第二条规则是:不要使用闪屏!:

提供启动图像以改善用户体验。

避免使用您的启动图像作为提供以下内容的机会:

“应用程序入口体验”,例如闪屏

关于窗口

品牌元素,除非它们是应用程序首屏的静态部分

如果您绝对必须包含一个长时间的启动画面,并且有充分的理由这样做,那么通常的方法是抛出一个UIImageView包含您启动图像的副本,例如application:didFinishLaunchingWithOptions:- 这应该提供一个冗长的启动画面的错觉屏幕。

但请不要。

于 2012-04-04T09:01:25.407 回答
10

使用“启动画面”(徽标等)不是 Default.png 的想法!

从 Apple读取HIG 。

(启动)屏幕(称为加载屏幕)不适用于徽标显示或类似的东西。启用多任务处理后,“启动画面”很少出现。启动屏幕应该像苹果应用程序一样,只显示第一个应用程序屏幕中出现的界面,没有任何本地化字符串等。

还要记住:iOS 设备的速度越快,您看到的 Default.png 就越短。因此,请避免将其用于任何重要的 CI/CD 内容。

于 2012-04-04T08:57:26.833 回答
6

默认图像在应用程序加载时显示,并在应用程序准备就绪后立即关闭。并且没有 API 可以控制该持续时间。

于 2012-04-04T08:56:40.160 回答
1

从技术上讲,您无法修改“默认”图像停留在那里的持续时间;它被设计为只是一个“预示”应用程序实际启动的临时图像,而不是专门设计为启动屏幕。

我建议您通过在 -application:didFinishLaunchingWithOptions: 方法中启动应用程序时向屏幕添加图像视图来保持“启动画面效果”。然后,您可以设置一个计时器,该计时器调用一种方法来在您希望的指定时间之后为飞溅设置动画。它会比您指定的时间长一点,具体取决于应用程序实际加载所需的时间,但它会产生您所追求的效果。

您可以将图像视图的图像设置为 [UIImage imageNamed:@"Default"],它将为您访问该默认图稿。

于 2012-04-04T08:58:46.733 回答
0

您无法更改持续时间。如果您希望它显示更长的时间,您可以将相同的图像添加到您在加载数据时显示的视图中!

于 2012-04-04T08:56:59.840 回答
0

这里有一篇很好的博客文章,介绍了如何使用UIImageView带有计时器的 a 来创建启动画面:

http://nullpointr.wordpress.com/2012/02/19/iphone-dev-how-to-implement-a-splash-screen/

对于仍在学习在 iOS 中做事的最佳方式的初学者很有用。

于 2014-04-11T03:50:30.480 回答
0

正如@Conrad Shultz 回答的那样,启动画面只能通过LaunchScreen.storyboardXcode 提供的文件使用。

但是,在极少数情况下,您确实希望延长启动画面:

  • 在应用程序启动之前下载大量文件,因为应用程序依赖于它们。
  • 其他原因...

这是这样做的方法:

在里面AppDelegatedidFinishLaunchingWithOptions你应该:

  1. 创建具有相同初始图像和相同约束的 VC
  2. 呈现它
  3. 在给定时间后将其关闭

编码:

let splashVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "splash")

    window?.makeKeyAndVisible()

    if let root = window?.rootViewController
    {
        root.present(splashVC, animated: false, completion: nil)
        let dispatchTime = DispatchTime.now() + 3

        // didFinishLaunchingWithOptions will return and this block will be executed afterwards, hence, async..
        DispatchQueue.main.asyncAfter(deadline: dispatchTime, execute: {
            root.presentedViewController?.dismiss(animated: false, completion: nil)
        })
    }
}
于 2017-06-05T07:32:14.627 回答