web-dev-qa-db-fra.com

Exécuter du code dans l'écran de lancement

Xcode permet de créer un écran de lancement dans .xib fichiers via Interface Builder. Est-il possible d'exécuter du code avec le xib, tout comme dans les contrôleurs de vue habituels? Ce serait formidable si nous pouvions définir différents textes/images/etc lors du lancement de l'application.

31
Dmitriy

Non, ce n'est pas possible.

Lorsque l'écran de lancement est affiché, votre application est en état de chargement.

Même la - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ne sera pas complètement exécutée tant que l'écran de lancement sera affiché.

Il est donc clair que vous n'avez aucun accès à votre application et donc à ce stade, vous ne pouvez exécuter aucun code.

42
Midhun MP

J'essayais de faire la même chose ici. :)

J'ai vraiment aimé certaines des applications, dans lesquelles ils font un petit texte et une image de salutation dynamique chaque fois que l'application est lancée, comme "Tu as l'air bien aujourd'hui!", "Aujourd'hui c'est vendredi, une journée merveilleuse", etc., qui est très mignon.

J'ai fait quelques recherches, voici comment le faire: (Mon code est XCode 7, avec un fichier launchscreen.xib)

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var customizedLaunchScreenView: UIView?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.
        application.statusBarHidden = true

        // customized launch screen
        if let window = self.window {
            self.customizedLaunchScreenView = UIView(frame: window.bounds)
            self.customizedLaunchScreenView?.backgroundColor = UIColor.greenColor()

            self.window?.makeKeyAndVisible()
            self.window?.addSubview(self.customizedLaunchScreenView!)
            self.window?.bringSubviewToFront(self.customizedLaunchScreenView!)
            UIView.animateWithDuration(1, delay: 2, options: .CurveEaseOut,
                                       animations: { () -> Void in
                                        self.customizedLaunchScreenView?.alpha = 0 },
                                       completion: { _ in
                                        self.customizedLaunchScreenView?.removeFromSuperview() })
        }

        return true
    }

// other stuff ...

}

Faites juste ce que vous vouliez montrer, texte, images, animations, etc. à l'intérieur de customLaunchScreenView ici.

À la fin du lancement, il vous suffit de fondre cette UIView personnalisée en utilisant la modification de la valeur alpha, puis de la supprimer complètement.

À quel point cela est cool? J'adore ça!

J'espère que cela aide.

5
RainCast

J'essayais également d'y parvenir. J'ai essayé ce qui suit, cela donne un délai de quelques secondes mais fonctionne pour moi.

  • Créez et définissez un écran de lancement dans les paramètres du projet.
  • Créez un contrôleur de vue avec une classe personnalisée (SplashViewController) et définissez-le comme contrôleur de vue de départ dans le storyboard.
  • Ajoutez-y une vue de conteneur et réglez-la en plein écran.
  • Définissez la séquence intégrée sur une référence de storyboard.
  • Sélectionnez Référence du storyboard et définissez l'écran de lancement dans la propriété StoryBoard de l'inspecteur d'attributs.
  • Faites tout ce que vous voulez dans SplashViewController (lecture d'animation ou vérification de session, etc.) et effectuez un enchaînement une fois terminé.

J'espère que cela aide!

0
Bilal Ahmad