Mam aplikację z 9-10 ekranami. Umieściłem UINavigationController
w moim kontrolerze widoku. Mam kilka kontrolerów widoku, które chcę ustawić tylko orientację pionową: oznacza to, że obracanie urządzenia nie powinno obracać tych kontrolerów widoku do trybu poziomego. Próbowałem następujące rozwiązania:Jak wymusić lub wyłączyć orientację interfejsu dla niektórych, ale nie wszystkich kontrolerów UIViewController?
pierwszy:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
ale ekran nadal obraca się do góry.
drugie: Stworzyłem klasę niestandardowy widok kontrolera jako PortraitViewController
i dodaje poniższy kod w PortraitViewController.m
@interface PortraitViewController()
@end
@implementation PortraitViewController
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
//Here check class name and then return type of orientation
return UIInterfaceOrientationMaskPortrait;
}
@end
Potem realizowane PortraitViewController.h
jako klasy bazowej
#import <UIKit/UIKit.h>
#import "PortraitViewController.h"
@interface Login : PortraitViewController
@end
Czyni w ogóle nie działa, nadal pozwala kontrolerowi widoku obracać się w trybie poziomym.
Czy istnieje inne rozwiązanie, którego używam iOS 8 & nie chcesz, aby kontroler widoku obracał się w trybie poziomym?
EDIT: Czy to możliwe, aby mieć orientację Pozioma tylko dla niektórych kontrolerów widoku i zmusić inną orientację widoku kontrolerów trzymać się portret?
gdzie napisałeś pierwsze dwie linie? – iAnurag
W ViewDidLoad @ iAnurag – TechGuy
@JulianM opublikował poprawną odpowiedź.Podejmujesz jednak pewne ryzyko związane ze spójnością aplikacji, ponieważ kontrolery ukrytych widoków nie otrzymują komunikatów o zmianach orientacji. Powinieneś rozważyć przeprojektowanie interfejsu i dostrojenie swojego doświadczenia użytkownika, – SwiftArchitect