web-dev-qa-db-fra.com

iOS: comment retarder l'écran de lancement?

Lors du lancement d'une application, le fichier LaunchScreen.xib est supprimé dès que tous les actifs sont initialisés.

Je souhaite que l'écran de lancement reste pendant au moins 1 seconde.

Y a-t-il un moyen d'y parvenir?

Je vous remercie!

5
ishahak

Vous pouvez créer un contrôleur de vue qui utilise le storyboard LaunchScreen, le présenter (non animé) sur applicationDidFinishLaunching ou applicationWillFinishLaunching et le fermer à tout moment.

N'oubliez pas que cela est découragé par Apple, car cela donne l'impression que le lancement de votre application est beaucoup plus long, ce qui constitue une mauvaise expérience utilisateur et peut amener certains de vos utilisateurs à supprimer votre application.

15
EmilioPelaez

Mise à jour Swift 4

Il suffit d'écrire une ligne de code Thread.sleep(forTimeInterval: 3.0) dans la méthode de didfinishLauching.... dans la classe appdelegate.

Exemple

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

Jamais dormir sur le fil principal. Faire cela pourrait en réalité causer à iOS de tuer votre application parce que cela prend trop de temps pour démarrer

5
Xcoder

Bien que je réfléchisse à cela, je voulais écrire dans les commentaires, mais cela ne permet pas beaucoup de lignes. Je crois que de nombreux développeurs d’applications souhaitent faire cela (retarder l’écran de lancement), c’est parce qu’ils souhaitent renforcer la présence des applications/jeux de leur marque. 

Cela dit, l’écran de lancement n’est PAS conçu pour cela, comme l’a expliqué Rick Maddy dans la partie commentaire de l’une des réponses. L'objectif de l'écran de lancement est de faire en sorte que les utilisateurs sentent que l'application est en cours d'exécution en affichant l'interface utilisateur vide pendant le chargement des données réelles à l'arrière (apparaîtra, etc.).

Donc, pour réaliser ce que de nombreux développeurs veulent, tout en restant en ligne avec le HIG d’Apple, vous pouvez faire ce qui suit:

  1. Affichez le modèle d'interface utilisateur sur l'écran de lancement, comme prévu par Apple HIG.
  2. Lors du chargement de l'écran principal, chargez un autre VC indiquant "l'intro" de votre marque. Assurez-vous que cela ne fonctionne qu'une seule fois (un simple drapeau dans NSUserDefaults devrait faire l'affaire).
  3. Les utilisateurs devraient être autorisés à ignorer ceci s'il s'agit d'une longue "intro".

La même "intro" VC devrait être disponible pour l'utilisateur en appuyant sur un bouton "Voir l'intro" quelque part (peut-être dans la page à propos).

2
GeneCode

Si vous voulez aller avec simple, vous pouvez utiliser NSThread:

[NSThread sleepForTimeInterval:(NSTimeInterval)];

Vous pouvez mettre ce code dans la première ligne de la méthode applicationDidFinishLaunching.

Par exemple, affichez default.png pendant 1,0 seconde.

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

Il arrêtera l'écran de démarrage pendant 1,0 seconde.

1
iBhavin

Pour Tenir l'écran, vous pouvez envoyer le fil en mode veille pendant un certain intervalle de temps, mais à ce moment-là, aucune action ne peut être exécutée.

- (void) applicationDidFinishLaunching:(UIApplication*)application{[NSThread sleepForTimeInterval:5.0];}
0
DURGESH Chaurasiya