2012-01-14 15 views
7

Sono nuovo nello sviluppo di iOS. Ho letto alcuni dei codici sorgente che ho trovato online e molti di essi non includono un singolo file di pennini. Tutta la vista sembra essere disegnata manualmente dal codice.Dovresti o non dovresti usare i file pennino?

Quali sono i vantaggi di avere/non avere un file di pennino? Perché hanno scelto di creare tutto dal codice invece di qualcosa che potevi visualizzare come storyboard o file * .xib?

+0

Non dimenticare che: "Gli storyboard sono supportati in iOS 5 e versioni successive e sono abilitati per impostazione predefinita per i nuovi progetti. Se l'app deve essere eseguita nelle versioni precedenti di di iOS, non è possibile utilizzare gli storyboard e continuare usa i file pennino. " (Guida alla programmazione app di iOs © Apple Inc). – Kenneth

risposta

5

Ci sono pennini molto semplici come il tipico MainWindow.nib, che non hanno un contenuto localizzato e possono essere riprodotti con una singola riga di codice. In questi casi il codice è molto più veloce di unarchiving del pennino.

Ci sono anche layout altamente dinamici che sono impossibili da descrivere come pennino.

Si dovrebbe scegliere il modo più conveniente ed efficiente in ogni caso particolare. Ci saranno sempre dei compromessi, basta scegliere con saggezza.

7

ci sono molti motivi per creare viste nel codice.

  • pennini file sono pigri-caricato e portano talvolta ad una notevole mancanza di reazione che gli utenti non piace
  • non è possibile configurare tutto in IB e un sacco Visualizzazioni bisogno di alcuni extra particolari
  • volte è più facile di scrivere solo la tua vista giù di clic e trascinando tutta roba necessario insieme
  • ...

Penso che la ragione più importante è la mancanza di prestazioni e funzionalità.

Sto usando i file di pennini quando voglio solo mostrare informazioni semplici con semplici pulsanti e etichette e per la prototipazione.

11

Il motivo principale per cui mi piace il codice è che si differenzia bene nel controllo del codice sorgente. Gli XIB sono molto difficili da diff, unire, leggere.

Il codice è anche facile che copia/incolla snippet salvati. Con IB, dimentico sempre una casella di controllo che mi lascia chiedermi perché la magia non funzioni. Le mie note hanno frammenti di codice.

Ciò che IB eccelle davvero è il layout e ti aiuta con le linee guida dell'interfaccia umana (numero di pixel tra i controlli ecc ... con linee guida).

Quindi, la mia preferenza personale è il layout in IB e tutto il resto nel codice (compresi target, azione, aggiunta di colonne ecc ... ecc ...). In scenari dinamici, tuttavia, IB cade a pezzi e si finisce con visualizzazioni personalizzate.

Ecco un post correlato:

Interface Builder (XIB) or Code when merging in a team environment?

9

Ci sono molte ragioni per cui si dovrebbe utilizzare pennini e perché non si dovrebbe. Non c'è una risposta definitiva e ogni risposta dipende da cosa devi fare.

Oltre agli ovvi vantaggi offerti da Nibs (processo di creazione rapida dell'interfaccia utente, riduzione della visualizzazione del codice di costruzione nei file .m) offrono qualcosa che non è possibile trovare in altro modo: risoluzione dei problemi di localizzazione. Mentre localizzi la tua applicazione in altre lingue, ti imbatterai in frasi e cose che richiedono 2-3 parole per spiegare mentre in un'altra lingua ne prendono una sola.Questo porta seriamente a errori con viste fuori posto all'interno di un controller di visualizzazione quando si utilizzano localizzazioni diverse. Pertanto, puoi disporre di 2-3 sub-pennini per ciascun pennino in Xcode 4 e localizzare ognuno come preferisci e posizionare i pulsanti e le viste negli spazi corretti, senza preoccuparti di riposizionare le tue visualizzazioni in base alla lingua l'utente ha. Se dovessi fare tutto questo usando il codice, avresti dovuto inserire "se è ovunque, e questa è certamente una cattiva pratica di programmazione, ed incline agli errori.

Ho creato alcuni controller di vista che richiederebbero centinaia di righe solo per configurare le viste se non avessi utilizzato il generatore di interfacce.

Tuttavia, i NIB non raggiungeranno mai le prestazioni di creazione delle viste a livello di codice poiché ogni NIB è un descrittore di vista scritto in HTML/XML e prima che venga creata qualsiasi vista, un file deve essere letto dal disco e analizzato. I pennini mancano anche delle opzioni di personalizzazione del codice semplice (ombre discendenti, angoli arrotondati e altre magie al quarzo). Queste opzioni di personalizzazione non sono disponibili perché ci sono molti modi per ottenere lo stesso risultato usando il codice, parlando al livello di Animazione Core di livello più alto, affrontando direttamente QuartCore e CGGraphics e facendo cose pesanti lì che è sicuramente più veloce e raccomandato nella maggior parte casi (le ombre che utilizzano i livelli possono essere estremamente lente). Quindi Apple non vuole limitare lo sviluppo in un modo specifico di disegnare le cose.

NIB esistono per un motivo. Devi assicurarti che nella tua applicazione capisci i motivi per cui crei un NIB. Esistono pennini per collegare il codice alle prese, facilitare la localizzazione, accelerare lo sviluppo e ripulire il codice. All'interno di un progetto devi certamente usare i pennini, ma devi anche evitare di usarli laddove il codice semplice ti darebbe gli stessi risultati con uno sforzo minimo o simile.

Ultimo ma non meno importante, prendere in considerazione la gestione della memoria. L'uso dei pennini influenzerà la deallocazione di oggetti allocati come IBOutlets. Se arena è sicuro che un IBOutlet che crei sarà deallocato quando lo desideri, non utilizzare un NIB. utilizzare invece un codice semplice.

0

Vorrei iniziare con xibs. Una volta completata l'interfaccia utente, quindi migrare i tuoi xibs al codice. In questo modo ottieni il meglio da entrambi i mondi. XIBs può essere lento, e ho visto 400KB XIBS (un pò raro però). XIBs sono sicuramente crufty però ...

1
A nib file is a special type of resource file that you use to store the user interfaces of iOS and Mac apps. A nib file is an Interface Builder document. You use Interface Builder to design the visual parts of your app—such as windows and views—and sometimes to configure nonvisual objects, such as the controller objects that your app uses to manage its windows and views. In effect, as you edit an Interface Builder document, you create an object graph that is then archived when you save the file. When you load the file, the object graph is unarchived. 

Il file-e pennino, quindi, l'oggetto grafico-può contenere oggetti segnaposto che vengono utilizzati per fare riferimento a oggetti che vivono al di fuori del documento, ma che possono avere i riferimenti agli oggetti in il documento o a cui gli oggetti nel documento possono avere riferimenti. Un segnaposto speciale è il proprietario del file.

In fase di esecuzione, si carica un file di pennino utilizzando il metodo loadNibNamed: owner: o una sua variante. Il proprietario del file è un segnaposto nel file pennino per l'oggetto che si passa come parametro proprietario di tale metodo. Qualunque connessione stabilita per e dal proprietario del file nel file di pennino in Interface Builder viene ristabilita quando si carica il file in fase di runtime.

iOS utilizza i pennini come dettaglio di implementazione che supporta gli storyboard, il formato di layout di progettazione dell'interfaccia utente iOS. Gli storyboard ti consentono di progettare e visualizzare l'intera interfaccia utente della tua app su una tela. Per gli sviluppatori iOS, l'utilizzo di storyboard è il modo consigliato per progettare interfacce utente.