Podczas adoptowania nowego UISplitViewController
próbuję zmienić domyślne zachowanie, które występuje podczas korzystania z trybu UISplitViewControllerDisplayModeAutomatic
.Ukrywanie nakładki UISplitViewController w trybie portretowym
Podczas pracy portretowej chcę ukryć nakładkę główną, gdy użytkownik uruchomi wypychanie do strony szczegółów. Domyślnie nakładka pozostaje na ekranie, dopóki użytkownik nie dotknie strony szczegółowej.
Próbowałem przy użyciu następujących z delegatem:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(id)sender
{
if (splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
[UIView animateWithDuration:0.3 animations:^{
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}];
}
return NO;
}
To daje mi pożądanego zachowania w układzie pionowym, ale przerywa tryb krajobrazowy (którego chcę zachowywać się jak UISplitViewControllerDisplayModeAllVisible
). Jeśli wykonałeś naciśnięcie, a następnie obróciłeś urządzenie, lewa strona nadal jest ukryta (zgodnie z oczekiwaniami). Nie mogę znaleźć aproksymowanego miejsca, w którym można by włączyć ponownie preferowany tryb obracania, aby pokazać lewą stronę (ponieważ kolekcje cech nie mogą być używane do odróżnienia krajobrazu od portretu na iPadzie).
Jak ręcznie uruchomić zwolnienie nakładki?
Dupe uwaga:systemów iOS 8 zmieniła UISplitViewController
całkowicie, więc wszystkie inne tak odpowiedzi przed czerwcu '14 prawdopodobnie źle (a ja już wykopane przez wielu z nich, tylko okrywać)
Przyjemna prosta odpowiedź. Zauważyłem, że czas trwania 0,3 jest nieco powolny w porównaniu z animacją, kiedy włączasz się lub wyłączasz za pomocą machnięcia lub przycisku; 0,2 sekundy wydaje się być w porządku. – Nick
To działa świetnie, ale jeśli widok główny jest wyświetlany, gdy urządzenie jest obrócone do pionu, widok szczegółów nie zmienia się odpowiednio. – Leon