IOS 6 wymusza orientację urządzenia na krajobraz
Dałem aplikację z 10 kontrolerami widoku. Używam kontrolera nawigacji do ich załadowania / wyładowania.
Wszystkie oprócz jednego są w trybie portretowym. Załóżmy, że siódmy VC jest w krajobrazie. Potrzebuję go, aby był ładowany w krajobrazie.
W IOS 6 zasugeruj sposób wymuszenia zmiany orientacji z pionowej na poziomą (i dobrze będzie pracować również w IOS 5).
Oto jak to robiłemPRZED IOS 6:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIViewController *c = [[[UIViewController alloc]init] autorelease];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Prezentowanie i odrzucanie modalnego VC zmuszało aplikację do sprawdzenia jej orientacjishouldAutorotateToInterfaceOrientation
dzwonił.
Co próbowałem w IOS 6:
- (BOOL)shouldAutorotate{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeLeft;
}
Podczas ładowania kontroler pozostaje w portrecie. Po obróceniu urządzenia zmiana orientacji jest w porządku. Ale muszę sprawić, aby kontroler obracał się automatycznie do krajobrazu na obciążeniu, dlatego użytkownik będzie musiał obrócić urządzenie, aby poprawnie zobaczyć dane.
Inny problem: po obróceniu urządzenia z powrotem do portretu, orientacja przechodzi w portret, chociaż określiłem wsupportedInterfaceOrientations
tylkoUIInterfaceOrientationMaskLandscape
. Dlaczego tak się dzieje?
Również,ŻADEN powyżej 3 metody są wywoływane.
Niektóre (przydatne) dane:
W moim pliku plist określiłem 3 orientacje - wszystkie z wyjątkiem do góry nogami.Projekt został uruchomiony w Xcode 4.3 IOS 5. Wszystkie klasy, w tym xib, zostały utworzone przed Xcode 4.5 IOS 6, teraz używam ostatniej wersji.W pliku plist pasek stanu jest ustawiony na widoczny.W pliku xib (tym, który chcę znaleźć w krajobrazie) pasek stanu to „Brak”, orientacja jest ustawiona na krajobraz.Każda pomoc jest doceniana. Dzięki.