20

启动应用程序时,一旦初始化所有资产,就会删除LaunchScreen.xib 。

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

有没有办法做到这一点?

谢谢!

4

6 回答 6

28

您可以创建一个使用 LaunchScreen 故事板的视图控制器,在 or 上显示它(不是动画)applicationDidFinishLaunchingapplicationWillFinishLaunching并在需要时将其关闭。

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

于 2016-01-27T03:46:27.047 回答
19

斯威夫特 4 更新

只需在in classThread.sleep(forTimeInterval: 3.0) 的方法中写一行代码 。didfinishLauching....appdelegate

例子

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    Thread.sleep(forTimeInterval: 3.0)
    // Override point for customization after application launch.
    return true
}
于 2018-01-01T17:05:28.663 回答
11

永远不要睡在主线程上。这样做实际上可能会导致 iOS 因启动时间过长而终止您的应用程序

于 2017-09-04T21:39:18.050 回答
2

想我对此的想法,我想写评论,但它不允许很多行。我相信许多应用程序开发人员想要这样做(延迟启动屏幕)是因为他们想为他们的公司建立应用程序/游戏的品牌形象。

话虽如此,启动屏幕并不是为此而设计的,正如 Rick Maddy 在其他答案之一的评论部分中解释的那样。启动屏幕的目的是通过显示空的 UI,而实际数据在后面加载(willAppear 等),让用户感觉到应用程序正在立即运行。

因此,要实现许多开发人员想要的,同时与 Apple 的 HIG 保持一致,您可以做的是:

  1. 按照 Apple HIG 的预期在启动屏幕中显示 UI 模板。
  2. 在主屏幕加载时,加载另一个显示您的品牌“介绍”的 VC。确保它只运行一次(NSUserDefaults 中的一个简单标志应该可以解决问题)。
  3. 如果“介绍”很长,则应允许用户跳过此内容。

通过在某处(可能在关于页面)点击“查看介绍”按钮,用户应该可以使用相同的“介绍”VC。

于 2016-11-13T05:20:07.123 回答
1

如果你想简单,你可以使用NSThread

[NSThread sleepForTimeInterval:(NSTimeInterval)];

您可以将此代码放入applicationDidFinishLaunching方法的第一行。

例如,显示 default.png 1.0 秒。

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

它将停止闪屏 1.0 秒。

于 2016-01-27T03:49:59.007 回答
0

找到 Alhamdulellah 解决方案

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

private func SplashScreenTiming(){

    let LunchScreenVC = UIStoryboard.init(name: "LaunchScreen", bundle: nil)
    let rootVc = LunchScreenVC.instantiateViewController(withIdentifier: "splashController")
    
    self.window?.rootViewController = rootVc
    self.window?.makeKeyAndVisible()
    Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(DismissSpalshController), userInfo: nil, repeats: false)
}
@objc func DismissSpalshController(){
    let mainVC = UIStoryboard.init(name: "Main", bundle: nil)
    let rootvc = mainVC.instantiateViewController(withIdentifier: "SignInVC")
    self.window?.rootViewController = rootvc
    self.window?.makeKeyAndVisible()
    
}
于 2020-10-06T10:01:07.593 回答