iOS Swift écran de démarrage à partir de Storyboard
Dans mon application iPhone besoin d'afficher un écran de démarrage (affiche le logo de l'entreprise et des infos) pendant 2 à 3 secondes avant le chargement de la première page.
Également l'application doit décider quelle page doit charger la première page ici (d'après les initiales de la configuration de fin de niveau par l'utilisateur).
Je suis en utilisant 'Swift' que la programmation de la langue et de l'Universel "StoryBoard" pour la conception des interfaces...
J'ai sélectionné le Principal.storyboard que l'Écran de Lancement de Fichier. Dans le ViewController classe ont mis en œuvre suivant la logique
override func viewDidAppear(animated: Bool) {
NSLog("Before sleep...")
sleep(2)
NSLog("After sleep...")
self.controllNavigation()
}
func controllNavigation() -> Void {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var nextViewController
if (Condition1)
{
nextViewController = storyBoard.instantiateViewControllerWithIdentifier("MainMenu") as! MainMenuViewController
}
else
{
nextViewController = storyBoard.instantiateViewControllerWithIdentifier("UserSetup") as! UserSetupViewController
}
self.presentViewController(nextViewController, animated: true, completion: nil)
}
Tout fonctionne ok mais en attendant avec sleep(2)
, actualiser la page genre de chose se produit. Je ne suis pas sûr si c'est la meilleure façon de le faire. Comme pour entendre leurs idées. Grâce
- Vous n'êtes pas un utilisateur pleaser êtes-vous... de 2 à 3 secondes de pause? Juste laisser l'utilisateur dans! Ou vous vous dirigerez de 1 étoiles. Les utilisateurs ne veulent pas regarder le logo de votre société ou de l'info pour tout le temps, on peut présumer qu'ils veulent utiliser votre application.
- bonjour Daniel, oui, je comprends. Mais c'est l'exigence des clients. Leur Android et windows apps de le faire. Besoin de la même fonctionnalité dans IOS app.
- Pourquoi ne pas vous utiliser l'Écran de Lancement comme il se doit, afin de ne pas irriter les utilisateurs, et s'en va dès que l'application a chargé?
- Salut longbow 8, oui pourriez utiliser. Mais la nécessité de mettre en œuvre cette logique (pour décider de la page qui doit se charger en tant que premier). Doit également mettre en œuvre que 2 secondes de délai.
- Vous devez trouver vous-même un de plus respectable de la clientèle. N'oubliez pas, le client n'est pas la société, c'est l'utilisateur 🙂 /coup de gueule sur/ s'il vous Plaît pardonnez-moi je sais que je ne suis d'aucune aide pour vous, je suis juste fou sur une grande Expérience de l'Utilisateur.
Vous devez vous connecter pour publier un commentaire.
Utiliser le retard dans l'application délégué au lieu de viewController de viewDidAppear.
Utiliser comme:
Faire cela permettra à votre écran de démarrage pour rester jusqu'à 2 secondes, puis vous pouvez utiliser la suite de votre point de vue contrôleur:
Espère que cela aide 🙂
performSelector: afterDelay:
Je suis tombé sur le même genre de réponses qui
sleep()
, toutefois, il ne semble pas approprié à utiliser car il bloque le thread principal.Je suis venu avec cette solution si vous utilisez la valeur par défaut LaunchScreen.storyboard dans Xcode 7.2:
Cela fera apparaître l'écran de lancement pour un autre 2 secondes, puis fondu sur les 0.5 secondes. Vous pouvez vous appeler une autre fonction pour charger le "défaut" du CR dans le gestionnaire d'achèvement.
J'ai résolu ce problème avec ceci:
Sur mon projet, je réglez le storyboard de splash (dans mon cas de projections d'eau.storyboard) comme Écran par Défaut -> Objectifs/(votre cible)/Info/Écran de Lancement de l'Interface de Nom de Base du Fichier.
Domaine les Paramètres du Projet
Lorsque vous avez fait cela, vous pouvez insérer votre logique sur la méthode "func demande(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Aucune?) -> Bool {} " placé sur AppDelegate.swift .
Si vous voulez faire un code propre, vous pouvez insérer tous vos relatives à la navigation sur les méthodes d'une autre Classe, et de les appeler à partir de AppDelegate.swift .
Avec cette solution, la splash est visible uniquement le temps nécessaire, et quand il a fini, vous pouvez naviguer à l'écran dont vous avez besoin.
Swift 4 mise à Jour 100% de travail
Il suffit d'écrire une seule ligne de code
Thread.sleep(forTimeInterval: 3.0)
dans la méthode dedidfinishLauching....
dansappdelegate
classe.Exemple