Nell'adottare il nuovo UISplitViewController
Sto tentando di apportare una modifica a un comportamento predefinito che si verifica quando si utilizza la modalità UISplitViewControllerDisplayModeAutomatic
.Nascondere la sovrapposizione di UISplitViewController in portrait
Quando si lavora in verticale, voglio che la sovrapposizione primaria si nasconda quando l'utente attiva una spinta sul lato dei dettagli. Per impostazione predefinita, la sovrapposizione rimane sullo schermo fino a quando l'utente tocca il lato dei dettagli.
Ho provato con il seguente con il delegato:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(id)sender
{
if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
[UIView animateWithDuration:0.3 animations:^{
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}];
}
return NO;
}
Questo mi dà il comportamento desiderato in verticale, ma questo si rompe modalità orizzontale (che voglio comportarsi come UISplitViewControllerDisplayModeAllVisible
). Se hai fatto una spinta e poi ruoti il dispositivo, il lato sinistro è ancora nascosto (come previsto). Non riesco a trovare una posizione appriprida da collegare per reimpostare la modalità preferita a rotazione per mostrare il lato sinistro (dal momento che le raccolte di tratti non possono essere utilizzate per dire paesaggio vs ritratto sull'iPad).
Come posso attivare manualmente un licenziamento dell'overlay?
Dupe nota:iOS 8 è cambiato UISplitViewController
del tutto, in modo che tutti gli altri SO risposte precedenti al giugno '14 sono probabilmente sbagliate (e ho scavato attraverso molti di loro, solo in caso)
Bella risposta semplice. Ho trovato la durata di 0,3 essere un po 'lento rispetto all'animazione quando si attiva o si esce con un colpo o un pulsante; 0,2 secondi sembra giusto. – Nick
Questo funziona benissimo ma se la vista principale viene visualizzata quando il dispositivo viene ruotato in orizzontale, la vista dettagliata non viene ridimensionata in modo appropriato. – Leon