繁体   English   中英

iOS 启动画面的持续时间(Default.png)

[英]iOS Duration of Splash Screen (Default.png)

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

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

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

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

“应用程序入口体验”,例如启动画面

一个关于 window

品牌元素,除非它们是应用程序第一个屏幕的 static 部分

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

但请不要。

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

阅读 Apple 的HIG

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

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

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

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

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

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

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

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

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

对初学者有用,他们仍在学习 iOS 中做事的最佳方法。

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

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

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

这是这样做的方法:

AppDelegate中,在didFinishLaunchingWithOptions下你应该:

  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)
        })
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM