iOS:如何延迟启动屏幕?

iOS:如何延迟启动屏幕?,ios,launch-screen,Ios,Launch Screen,启动应用程序时,启动屏幕.xib将在所有资产初始化后立即删除 我想让启动屏幕至少停留1秒钟 有没有办法做到这一点 谢谢大家! 您可以创建一个使用LaunchScreen序列图像板的视图控制器,在ApplicationIDFinishLaunching或applicationWillFinishLaunching上显示它(未设置动画),并随时关闭它 请记住,苹果公司不鼓励这样做,因为这给人的印象是,你的应用程序需要更长的时间才能启动,这是糟糕的用户体验,可能会导致一些用户删除你的应用程序。如果你想

启动应用程序时,启动屏幕.xib将在所有资产初始化后立即删除

我想让启动屏幕至少停留1秒钟

有没有办法做到这一点


谢谢大家!

您可以创建一个使用LaunchScreen序列图像板的视图控制器,在
ApplicationIDFinishLaunching
applicationWillFinishLaunching
上显示它(未设置动画),并随时关闭它


请记住,苹果公司不鼓励这样做,因为这给人的印象是,你的应用程序需要更长的时间才能启动,这是糟糕的用户体验,可能会导致一些用户删除你的应用程序。

如果你想使用simple,你可以使用
NSThread

[NSThread sleepForTimeInterval:(NSTimeInterval)];
您可以将此代码放入
ApplicationIDFinishLaunching
方法的第一行

例如,显示default.png 1.0秒

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
   [NSThread sleepForTimeInterval:1.0];
}

它将停止启动屏幕1.0秒。

我想在这个问题上插入我的想法,我想写评论,但它不允许有太多行。我相信很多应用开发者之所以想这么做(推迟发布屏幕),是因为他们想为自己的公司打造应用/游戏的品牌形象

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
   [NSThread sleepForTimeInterval:1.0];
}
话虽如此,正如Rick Maddy在另一个答案的评论部分中所解释的,启动屏幕并不是为此而设计的。Launch screen的目的是让用户感觉应用程序正在即时运行,在实际数据加载到后面时显示空的UI(将显示等)

因此,要实现许多开发者的愿望,同时与苹果的HIG保持一致,您可以做的是:

  • 按照Apple HIG的预期在启动屏幕中显示UI模板
  • 在主屏幕加载时,加载另一个显示您品牌“简介”的VC。确保此操作只运行一次(中的一个简单标志) NSUserDefaults应该可以做到这一点)
  • 如果这是一个很长的“介绍”,应该允许用户跳过它

  • 同样的“简介”VC应该可以通过点击某个地方的“查看简介”按钮(可能在“关于”页面中)供用户使用。

    从不睡在主线程上。这样做实际上可能会导致iOS停止您的应用程序,因为启动时间太长

    Swift 4 Update

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        Thread.sleep(forTimeInterval: 3.0)
        // Override point for customization after application launch.
        return true
    }
    
    只需写一行代码
    Thread.sleep(FortimInterval:3.0)
    
    didfishlauching…..
    appdelegate
    类中的方法中

    示例

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        Thread.sleep(forTimeInterval: 3.0)
        // Override point for customization after application launch.
        return true
    }
    

    找到了阿罕杜勒拉溶液

    仅在AppDelegate类中复制和粘贴此代码
    在didFinishLaunchingWithOptions()中调用此SplashScreenTiming()


    重新思考这一点。用户希望使用你的应用程序,而不是盯着启动屏幕。我只会“推荐”(保留)这种方法用于需要显示信用/授权启动屏幕的游戏和其他娱乐内容。否则,让你的应用程序看起来尽可能快地启动。永远不要在主线程上睡觉。这样做实际上可能会导致iOS停止你的应用程序,因为启动时间太长。这仍然是错误的。这段时间应该用来让应用程序运行,而不是坐在那里无所事事。这是根据问题而定的。这并不是一个合适或好的解决方案。另一个答案解释了正确的解决方案(即使在启动屏幕上显示的时间过长是个坏主意)。好吧,这可能是对的,我记住了,但我相信较短的解决方案可以实现我想要的。我接受这个答案,尽管它不是我想要的,因为我不知道启动屏幕已经显示了多长时间。我希望苹果能允许最短时间的配置,因为用户不喜欢看到200毫秒的东西,并且在他们理解它是什么之前就把它拿走了……这是因为发布屏幕不是用来显示任何内容的,苹果实际上建议相反,使启动屏幕成为应用程序的主视图,而不包含内容。如果你想在某处显示你的徽标,你可以制作一个奇特的
    About
    屏幕。这是苹果公司在发布屏幕上的HIG@我也使用这种方法!到目前为止,这是最好的方法。它允许我们像Netflix应用程序一样向启动屏幕添加动画。不,不要这样做。永远不要在主队列上睡觉。这适用于Xcode 10.4.2和Swift 5.0。谢谢@Xcidian Solangi这在使用模拟器开发时非常有用。使用Xcode 11.3.1和Swift 5进行测试。启动屏幕通常过快而看不见。只要等一秒钟就足够了。根据其他警告,消除生产版本的暂停可能是好的。