2014-12-24 14 views
26

Xcode consente di creare la schermata di avvio nei file .xib tramite Interface Builder. È possibile eseguire qualche codice con lo xib, proprio come nei soliti controller di visualizzazione? Sarebbe bello se possiamo impostare diversi testi/immagini/ecc durante l'avvio delle app.Esegui codice nella schermata di avvio

+2

Pensa a ** perché ** la schermata di avvio è lì. – zaph

+0

@Zaph Capisco PERCHE '. Ma dall'altra parte, se voglio mostrare solo un saluto casuale dalla lista definita, non ci vorrà nulla per iOS. – Dmitriy

+2

È sempre possibile aggiungere un controller di visualizzazione iniziale che visualizza la stessa immagine della schermata di avvio e aggiungere i propri auguri. – rdelmar

risposta

35

No, non è possibile.

Quando viene visualizzata la schermata di avvio, l'app sarà in stato di caricamento.

Anche il - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions non verrà eseguito completamente mentre è visualizzata la schermata di avvio.

Quindi è chiaro che non si ha accesso alla tua app e quindi a questo punto non è possibile eseguire alcun codice.

+0

Grazie per la risposta. Quindi il lancio di xib è stato caricato da iOS, non dall'app. Purtroppo, perché ho pensato di mostrare diversi saluti con lanci diversi. – Dmitriy

+0

@Dmitriy: Purtroppo non è possibile, solo l'immagine di lancio è sostituita da un lancio xib. L'unico vantaggio è che puoi progettare su di esso. Ma non è possibile eseguire alcun codice. –

+0

È possibile, l'ho appena capito. controlla la mia risposta qui sotto. – RainCast

3

Stavo cercando di fare la stessa cosa qui. :)

Mi sono piaciute alcune app in cui fanno un po 'di testo e di immagini dinamici ogni volta che viene lanciata l'app, come "Sei bella oggi!", "Oggi è venerdì, una giornata meravigliosa ", ecc., che è molto carino.

ho fatto qualche ricerca, sotto è come farlo: (il mio codice è XCode 7, con un file 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 ... 

} 

Basta fare ciò che mai si voleva mostrare, testo, immagini , animazioni, ecc. all'interno dello personalizzatoLaunchScreenView qui.

Alla fine dell'avvio, basta attenuare questo UIView personalizzato utilizzando la modifica del valore alfa, quindi rimuoverlo completamente.

Quanto è bello? Lo adoro assolutamente!

Spero che aiuti.

+1

didFinishLaunchingWithOptions viene chiamato al termine del caricamento dell'app, quindi dopo che è stata visualizzata la schermata di avvio. Capisco perché uno vorrebbe una transizione personalizzata prima di entrare nell'app ma questa non è una schermata di avvio personalizzata in alcun modo. –

+0

Quindi non è la risposta esatta alla domanda .. ma è molto utile .. un bel workaround – Yitzchak

0

Stavo anche cercando di raggiungere questo obiettivo. Ho provato quanto segue, dà un ritardo di un paio di secondi ma funziona per me.

  • Creare e impostare una schermata di avvio nelle impostazioni del progetto.
  • Creare un controller di visualizzazione con classe personalizzata (SplashViewController) e impostarlo come controller di visualizzazione iniziale nello storyboard.
  • Aggiungi una vista contenitore e impostala a schermo intero.
  • Imposta i passaggi incorporati in uno Storyboard di riferimento.
  • Seleziona Reference Storyboard e imposta la schermata di avvio nella proprietà StoryBoard da Attribute inspector.
  • Fai tutto ciò che vuoi in SplashViewController (riproduci animazione o controllo di sessione ecc.) Ed esegui i passaggi quando hai finito.

Spero che aiuti!

Problemi correlati