2015-01-15 14 views
8

Sto utilizzando una visualizzazione divisa solo su iPad, l'applicazione iOS 8 nella sua forma standard. (Quando l'iPad è orizzontale mostra sia la vista principale che quella di dettaglio, mentre in verticale mostra la vista dettagliata a schermo intero con una vista principale che scorre da sinistra.) Sia la vista principale che quella di dettaglio sono i controlli della vista di navigazione in cui il master contiene un controller di visualizzazione tabella. Le selezioni nella tabella della vista principale modificano la vista di dettaglio. Questo è tutto configurato e funziona correttamente.Animazione mostra/nascondi vista principale in UISplitViewController in iOS 8

Quello che mi piacerebbe fare, tuttavia, è quando in orientamento verticale una selezione effettuata nella tabella della vista principale, la vista principale dovrebbe animarsi fuori dallo schermo. Secondariamente, se una selezione non è stata fatta nella tabella della vista master all'avvio in modalità verticale, mi piacerebbe animare la vista principale in vista.

Qualsiasi consiglio è apprezzato.

risposta

18

La risposta è di animare la proprietà preferredDisplayMode. Per mostrare il codice è:

if (UIInterfaceOrientationIsPortrait([UIDevice currentDevice].orientation)) { 
    [UIView animateWithDuration:ANIMATION_LENGTH animations:^{ 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay; 
    } completion:^(BOOL finished) { 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    }]; 
} 

e per nascondere il codice è:

if (UIInterfaceOrientationIsPortrait([UIDevice currentDevice].orientation)) { 
    [UIView animateWithDuration:ANIMATION_LENGTH animations:^{ 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
    } completion:^(BOOL finished) { 
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
    }]; 
} 

ho impostato indietro su Automatico nel completamento in modo che il controller della vista divisione può fare la sua cosa normale dopo l'animazione è completato. Aggiungo anche un altro booleano allo show, quindi lo mostro solo se il mio elemento di dettaglio non è stato ancora impostato, ma l'ho rimosso dal codice sopra poiché questo è specifico del tuo codice.

+0

Esattamente quello che stavo cercando, ma ho dovuto rimuovere il bit di completamento altrimenti è semplicemente tornato a diventare nuovamente visibile. – trapper

+0

In Xcode 7.3, '[UIDevice currentDevice] .orientation' sta dando un messaggio di errore. Suggerisco una modifica per cambiare tali occorrenze a '[UIApplication sharedApplication] .statusBarOrientation'? – David

+0

Inoltre, questa animazione sta causando un'animazione indesiderata della vista tabella di dettaglio. – David

Problemi correlati