Xco*_*ngi 12 xcode timedelay splash-screen ios swift
我已经把一个image在imageView中LaunchStoreyboard.我怎样才能以编程方式延迟图像的时间?任何帮助都会非常值得一提.
这是Apple的Launch Screen Guideline
这是Launch Screen View控制器的代码
import UIKit
class LaunshViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.delay(0.4)
}
func delay(_ delay:Double, closure:@escaping ()->()) {
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*ack 41
在AppDelegate类中放入一行代码 -
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Thread.sleep(forTimeInterval: 3.0)
// Override point for customization after application launch.
return true
}
Run Code Online (Sandbox Code Playgroud)
osc*_*car 15
不建议将整个应用程序设置为等待状态.如果应用程序需要在完成监视程序之前完成更多工作,则可能会因启动时间过长而终止应用程序.
相反,你可以做这样的事情来推迟发布屏幕.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()
window?.makeKeyAndVisible()
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
self.window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
}
return true
}
Run Code Online (Sandbox Code Playgroud)
小智 13
斯威夫特4.x
这是不是把你的应用程序睡眠好习惯!
引导应用程序应尽可能快,因此您不想使用“启动”屏幕延迟。
但是,除了休眠之外,您还可以运行a,loop在此期间,接收器处理来自所有连接的输入源的数据:
这将延长启动屏幕的可见性时间。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
RunLoop.current.run(until: NSDate(timeIntervalSinceNow:1) as Date)
return true
}
Run Code Online (Sandbox Code Playgroud)
小智 11
斯威夫特 5.x,iOS 13.xx
在AppDelegate类中修改以下函数在Swift 5.x/iOS 13.xx 中不起作用。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
Run Code Online (Sandbox Code Playgroud)
相反,您必须修改SceneDelegate类中的场景函数,如下所示。它会延迟 LaunchSceen 3 秒。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
window?.rootViewController = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()
window?.makeKeyAndVisible()
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
self.window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
}
guard let _ = (scene as? UIWindowScene) else { return }
}
Run Code Online (Sandbox Code Playgroud)
该窗口变量应该已经有在SceneDelegate像下面的类。
var window: UIWindow?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26857 次 |
| 最近记录: |