¿Cómo configuro la vista del primer UIViewController para autorizar?

Tengo una subclass UIViewController para manejar mi vista para una aplicación solo de paisaje. Me gustaría que su vista cambia el tamaño para reflejar las dimensiones del paisaje automáticamente, pero no parece. Sin embargo, una subvista sí.

Aquí está el código de reproducción.

 @interface MyViewController : UIViewController { UIView *subview; } @implementation MyViewController - (id)init { self = [super init]; if (self) { self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; subview = [[UIView alloc] initWithFrame:self.view.frame]; subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self.view addSubview:subview]; } return self; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { NSLog(@"My view's frame (%f,%f)", self.view.frame.size.width, self.view.frame.size.height); NSLog(@"Subview's frame (%f,%f)", subview.frame.size.width, subview.frame.size.height); } @end 

Y entonces…

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; self.window.rootViewController = [[MyViewController alloc] init]; [self.window makeKeyAndVisible]; return YES; } 

Súper simple Y, sin embargo, en el arranque, registra:

 My view's frame (320.000000,480.000000) Subview's frame (480.000000,320.000000) 

La subvista se cambia de tamaño correctamente, pero la vista principal aún tiene un marco orientado verticalmente.

¿Cómo hago que el tamaño de vista de nivel superior se ajuste al modo horizontal?

Use esto en su viewController

 self.view.frame = [[UIScreen mainScreen] bounds]; 

Tienes que permitir las subvistas de autoresize de window:

 window.autoresizesSubviews=YES; 

¡Espero que esto ayude!

Prueba esto:

 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { //is portrait view.frame = CGRectMake(0,0,320,480) } else { //is landscape view.frame = CGRectMake(0,0,480,320); } } 

¡Espero que esto ayude!

 self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

Agregue esto en su viewdidload. Asegúrate de que en el guión gráfico, la propiedad de vista de Viewcontrollers esté asignada para ver