web-dev-qa-db-fra.com

Comment puis-je retarder un écran de lancement par programme par programme dans Swift Xcode iOS

J'ai mis imagein imageView dans LaunchStoreyboard. Comment puis-je retarder le temps de l'image par programme? toute aide sera très appréciable.

Voici le Directives concernant l’écran de lancement d’Apple

Voici le code pour le contrôleur de vue de l'écran de lancement 

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

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}
6
Xcodian Solangi

Mettez une ligne de code dans la classe AppDelegate - 

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

Ne recommanderais pas de mettre toute l'application dans un état d'attente. Si l'application doit effectuer plus de travail avant de terminer le programme de surveillance, l'application pourrait être trop longue à démarrer.

Au lieu de cela, vous pourriez faire quelque chose comme ceci pour retarder l'écran de lancement.

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
    }
8
oscar

Swift 4.x

Il estTRÈSbonne pratiquePASde mettre votre application en veille!

Le démarrage de votre application doit être aussi rapide que possible. Par conséquent, vous ne souhaitez pas utiliser le délai de l'écran de démarrage.

Mais, au lieu de sleep , vous pouvez exécuter une loop au cours de laquelle le récepteur traite les données de toutes les sources d’entrée attachées:

Cela prolongera le temps de visibilité de l'écran de lancement.

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
}
4
yoowim

Créez un ViewController et utilisez NSTimer pour détecter le délai. et quand le chronomètre se termine Appuyez sur le premier UIViewcontroller.

Dans la méthode ViewDidLoad ..

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fireMethod) userInfo:nil repeats:NO];


-(void)fireMethod
{
// Push view controller here..
}
1
Saranjith