Przed iOS 8 używaliśmy poniższego kodu w połączeniu z metodami supportedInterfaceOrientations i shouldAutoRotate , aby wymusić orientację aplikacji na dowolną konkretną orientację. Użyłem poniższego fragmentu kodu, aby programowo obrócić aplikację do żądanej orientacji. Po pierwsze, zmieniam orientację paska stanu. A następnie samo przedstawienie i natychmiastowe odrzucenie widoku modalnego powoduje obrócenie widoku do żądanej orientacji.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
Ale to zawodzi w iOS 8. Ponadto widziałem kilka odpowiedzi w przepełnieniu stosu, gdzie ludzie sugerowali, że powinniśmy zawsze unikać tego podejścia od iOS 8.
Mówiąc dokładniej, moja aplikacja jest aplikacją uniwersalną. W sumie są trzy kontrolery.
Kontroler pierwszego widoku - powinien obsługiwać wszystkie orientacje na iPadzie i tylko portret (przycisk ekranu głównego w dół) na iPhonie.
Kontroler Second View - powinien obsługiwać tylko krajobraz we wszystkich warunkach
Kontroler Third View - powinien obsługiwać tylko krajobraz w każdych warunkach
Używamy kontrolera nawigacji do nawigacji po stronach. Z pierwszego kontrolera widoku, po kliknięciu przycisku, przesuwamy drugi na stos. Tak więc, gdy nadejdzie drugi kontroler widoku, niezależnie od orientacji urządzenia, aplikacja powinna zablokować się tylko w orientacji poziomej.
Poniżej znajduje się moje shouldAutorotate
i supportedInterfaceOrientations
metody w kontrolerze drugiego i trzeciego widoku.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
Czy jest jakieś rozwiązanie dla tego lub lepszego sposobu blokowania kontrolera widoku w określonej orientacji dla iOS 8. Proszę o pomoc!