Il pattern di stato è una buona soluzione per implementare le modifiche all'interfaccia utente per le modalità Landscape e Portrait?

2

Per la nostra app per iOS, una grande complicata logica dell'interfaccia utente dipende dall'orientamento dell'interfaccia di ViewController. Questa logica condizionale è presente in molti luoghi.

Può essere separato in diversi stati sotto forma di oggetti?

    
posta Amogh Talpallikar 16.08.2013 - 09:36
fonte

2 risposte

2

UIViewController è in grado di gestirlo direttamente.

Supponiamo che la maggior parte dei fotogrammi della tua vista sia impostata contemporaneamente (nel tuo ViewController), Sposta il codice di impostazione del frame in un unico metodo .

-(void)setAllFrames;

Questo metodo imposterà il frame di ciascuna sottoview in base all'attuale orientamento dell'interfaccia, quindi conterrà la logica per determinare quale dovrebbe essere l'orientamento di ogni frame. Pertanto, quando la vista viene caricata per la prima volta, chiami [self setAllFrames]; e tutti i fotogrammi verranno regolati correttamente in base all'orientamento dell'interfaccia.

Ora, quando l'orientamento dell'interfaccia cambia, chiama questo metodo.

    
risposta data 16.08.2013 - 18:30
fonte
1

Sì, puoi utilizzare il Pattern di stato per separare la logica di layout di ciascun widget dell'interfaccia utente in classi distinte a seconda dell'orientamento. Ma renditi conto che questo potenzialmente triplica il conteggio delle classi per i tuoi widget dell'interfaccia utente e ne costringe molti a essere ricreati ogni volta che cambia l'orientamento.

Se esci con detto pattern, assicurati di aver definito correttamente% ogni Widget e quindi di avere% distinti landscapeWidget e portaitWidget oggetti che ereditano da widget . (Piuttosto che inserire codice non di layout in entrambi, che sarebbe copia e incolla programmazione .)

Ovviamente, renditi conto che alla fine dovrai modificare di nuovo l'interfaccia utente, quando Apple rilascerà un DVR iOS o un orologio iOS. Potrebbe essere meglio definire un layoutManager che organizza la tua interfaccia utente e avere tutta la logica di layout in essa, piuttosto che avere gli elementi di interfaccia utente individuali con classi distinte. Dì ai singoli elementi del widget quanto X e Y hanno, e non farli preoccupare per l'intero schermo.

    
risposta data 16.08.2013 - 17:48
fonte

Leggi altre domande sui tag