2013-01-24 13 views
9

Con iOS6 c'è AutoLayout, che è un sistema di layout basato su vincoli. Immagino che sia in qualche modo paragonabile ai layout flessibili di Android di Android.Perché hai 2 storyboard quando c'è il layout automatico?

Sto avviando un progetto iOS6 e desidero il layout automatico. Questa app sarà universale. Avrà alcune viste che sono estremamente simili tra 2 famiglie di dispositivi. Altre visualizzazioni sull'iPad saranno 2 o più controller nelle viste iPhone.

Da quello che ho capito, UIViewControllers può essere configurato con altri UIViewControllers figlio. Ciò significa che ci sono 2 ingredienti per costruire una vista universale in entrambi i dispositivi.

Quindi la mia domanda è: perché è necessario 2 storyboard? Vedo che lo storyboard dell'iPad ha alcuni controlli aggiuntivi, ecc. Ci sono anche problemi di ridimensionamento delle dimensioni dei caratteri e di altre variabili tra i due tipi di dispositivo. Qualcuno può offrire consigli su come non avere viste duplicate su 2 storyboard e utilizzare AutoLayout in modo efficiente per ottenere una buona app universale?

Molto apprezzato.

+0

non puoi! Devi usarlo entrambi. – TonyMkenu

+0

Solo perché è un dispositivo più grande non significa che usi solo la stessa interfaccia utente ma più grande. L'intero modo in cui viene utilizzato il dispositivo cambia tra iPhone e iPad. I concetti dell'interfaccia utente sono completamente diversi. – Fogmeister

risposta

8

Le interfacce utente iPad tendono a non essere semplicemente versioni ingrandite delle interfacce utente di iPhone. C'è più spazio sullo schermo da usare e ci sono degli elementi di interfaccia personalizzati solo per iPad (ad esempio, UISplitViewController).

Se nel tuo caso i diversi dispositivi hanno layout molto simili, allora sì, potresti usare solo un layout con gli autolayout e potrebbe funzionare bene. Tuttavia, lo raccomanderei contro nella maggior parte dei casi. È più chiaro avere solo due layout, uno per ogni tipo di dispositivo.

La decisione finale spetta a voi. Forse potresti provare la singola strategia di layout, usando gli autolayout, e vedere se ti trovi di fronte a problemi particolari.

+1

Vorrei poterlo fare di nuovo +1. – Fogmeister

+0

Sono passato un po 'di tempo ma alla fine ho optato per una soluzione ibrida di ordinamento. Ho uno storyboard per iPad per creare i layout di iPad. Alcuni pannelli (UIViews) negli storyboard sono vuoti. Ho un set di MasterIPadViewController, MasterIPhoneViewControllers che esegue un intelligente caricamento delle viste dall'altro storyboard se sono impostati punti vendita e opzioni. Alcuni dei VC per iPad estendono quelli per iPhone e aggiungono funzionalità extra all'interfaccia utente. Ciò ha consentito il massimo riutilizzo del codice e la massima flessibilità dell'interfaccia utente. (60Hz è il nome dell'app.) – dineth

+0

Lavoro su iOS e Android.Il frammento e alcuni elementi della gerarchia delle classi Java offrono molta più flessibilità per riutilizzare le cose. Ma sì, arrivano con il loro set di complessità extra. Penso che la mia prossima architettura universale per app sarà un po 'diversa. – dineth

2

È la mia esperienza che probabilmente sarebbe più semplice per te non utilizzare gli storyboard e creare tutto a livello di codice, ma questo è più basato sull'opinione pubblica.

La tua domanda è un po 'vaga, ma la mia opinione sarebbe quella di impostare le viste con i layout automatici come hai detto, e poi avere un controller che usa quelle viste. Quello che finirà per accadere è che avrete una vista all'interno di una vista all'interno di un controller, e questo vi permetterà di controllare tutti i layout mentre sarete in grado di scegliere e decidere dove andare, a seconda del dispositivo.

Potrebbe esserti d'aiuto se fornissi un esempio più specifico con cui correre. Ad essere onesti, però, anche questo mi interessa, e non vedo l'ora di vedere altre idee al riguardo.

+0

Grazie per la risposta. Ho fatto un paio di progetti di esempio per testare quali sono i modi per ottenere qualcosa di simile e ho ottenuto un buon successo da questo. Penso che questo meriti un intero post sul blog - che scriverò e pubblicheremo un riassunto come risposta qui. Sono stato in grado di caricare solo 1 storyboard. – dineth

Problemi correlati