启动应用程序时,一旦初始化所有资产,就会删除LaunchScreen.xib 。
我想让启动屏幕至少停留 1 秒。
有没有办法做到这一点?
谢谢!
您可以创建一个使用 LaunchScreen 故事板的视图控制器,在 or 上显示它(不是动画)applicationDidFinishLaunching
,applicationWillFinishLaunching
并在需要时将其关闭。
请记住,Apple 不鼓励这样做,因为它给人的印象是您的应用程序需要更长的时间才能启动,这是糟糕的用户体验,并且可能会导致您的一些用户删除您的应用程序。
斯威夫特 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
}
永远不要睡在主线程上。这样做实际上可能会导致 iOS 因启动时间过长而终止您的应用程序
想我对此的想法,我想写评论,但它不允许很多行。我相信许多应用程序开发人员想要这样做(延迟启动屏幕)是因为他们想为他们的公司建立应用程序/游戏的品牌形象。
话虽如此,启动屏幕并不是为此而设计的,正如 Rick Maddy 在其他答案之一的评论部分中解释的那样。启动屏幕的目的是通过显示空的 UI,而实际数据在后面加载(willAppear 等),让用户感觉到应用程序正在立即运行。
因此,要实现许多开发人员想要的,同时与 Apple 的 HIG 保持一致,您可以做的是:
- 按照 Apple HIG 的预期在启动屏幕中显示 UI 模板。
- 在主屏幕加载时,加载另一个显示您的品牌“介绍”的 VC。确保它只运行一次(NSUserDefaults 中的一个简单标志应该可以解决问题)。
- 如果“介绍”很长,则应允许用户跳过此内容。
通过在某处(可能在关于页面)点击“查看介绍”按钮,用户应该可以使用相同的“介绍”VC。
如果你想简单,你可以使用NSThread
:
[NSThread sleepForTimeInterval:(NSTimeInterval)];
您可以将此代码放入applicationDidFinishLaunching
方法的第一行。
例如,显示 default.png 1.0 秒。
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
[NSThread sleepForTimeInterval:1.0];
}
它将停止闪屏 1.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()
}