Ho un'app con 9-10 schermate. Ho incorporato uno UINavigationController
nel mio controller di visualizzazione. Ho pochi controller di visualizzazione che desidero impostare solo con orientamento verticale: significa che la rotazione del dispositivo non deve ruotare questi controller di visualizzazione in modalità orizzontale. Ho provato le seguenti soluzioni:Come forzare o disabilitare l'orientamento dell'interfaccia per alcuni ma non tutti UIViewController?
prima:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
ma schermo ruota ancora al paesaggio.
Secondo: Ho creato una classe controller visualizzazione personalizzata come PortraitViewController
e ha aggiunto il codice qui sotto in 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
Dopo che ho implementato PortraitViewController.h
come classe base
#import <UIKit/UIKit.h>
#import "PortraitViewController.h"
@interface Login : PortraitViewController
@end
Lo fa non funziona affatto, consente comunque al controller della vista di ruotare in modalità orizzontale.
C'è qualche altra soluzione che sto usando iOS 8 & non vuoi che il controllo del viewcontroller ruoti in modalità orizzontale?
EDIT: E 'possibile avere orientamento orizzontale solo per alcuni controller di vista, e la forza gli altri orientamento della vista controllori di rispettare ritratto?
dove hai scritto le prime due righe? – iAnurag
In ViewDidLoad @ iAnurag – TechGuy
@JulianM ha pubblicato la risposta corretta.Tuttavia, stai prendendo dei rischi con la coerenza della tua applicazione, dal momento che i controller di visualizzazione nascosti non riceveranno messaggi di orientamento. Dovresti prendere in considerazione la riprogettazione della tua interfaccia e mettere a punto la tua esperienza utente, – SwiftArchitect