2015-01-15 9 views
8

Ich verwende eine geteilte Ansicht in einem iPad nur, iOS 8 Anwendung in seiner Standardform. (Wenn sich das iPad im Querformat befindet, werden sowohl die Master- als auch die Detailansicht angezeigt. Im Hochformat wird die Detailansicht im Vollbildmodus mit einer Masteransicht von links angezeigt.) Sowohl Master- als auch Detailansichten sind Navigationsansicht-Controller ein Tabellenansicht-Controller. Auswahlmöglichkeiten in der Tabelle der Masteransicht ändern die Detailansicht. Dies ist alles eingerichtet und funktioniert ordnungsgemäß.Animieren zeigen/verbergen der Masteransicht in UISplitViewController in iOS 8

Was ich möchte, ist jedoch, wenn im Hochformat eine Auswahl in der Master-Ansicht Tabelle gemacht wird, sollte die Master-Ansicht vom Bildschirm animiert werden. Zweitens, wenn beim Start im Hochformat keine Auswahl in der Tabelle der Master-Ansicht getroffen wurde, möchte ich die Master-Ansicht in die Ansicht animieren.

Jede Anleitung wird geschätzt.

Antwort

18

Die Antwort ist, die preferredDisplayMode-Eigenschaft zu animieren. Um den Code zu zeigen ist:

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

und den Code zu verstecken ist:

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

ich es zurück auf Automatisch in dem Abschluss, so dass der Split-View-Controller seine normale Sache tun kann, nachdem die Animation abgeschlossen. Ich füge auch einen anderen Boolean zur Show hinzu, also zeige ich es nur, wenn mein Detailelement noch nicht eingestellt worden ist, aber ich entfernte es vom obigen Code, da dieser für deinen eigenen Code spezifisch ist.

+0

Genau das, was ich suchte, aber ich musste das Fertigstellungsbit entfernen, sonst sprang es einfach zurück, um wieder sichtbar zu werden. – trapper

+0

In Xcode 7.3 gibt '[UIDevice currentDevice] .orientation' eine Fehlermeldung aus. Ich empfehle eine Änderung, um diese Vorkommen in '[UIApplication sharedApplication] .statusBarOrientation' zu ändern? – David

+0

Darüber hinaus verursacht diese Animation jetzt eine unerwünschte Animation der Detailtabellenansicht. – David

Verwandte Themen