2010-03-31 26 views
6

Tengo una aplicación con muchas vistas. Solo quiero un par de vistas para poder girar al paisaje cuando se gira el dispositivo. Descubrí que no podía usar (BOOL)shouldAutorotateToInterfaceOrientation porque eso rotaría todas las vistas en mi aplicación. He encontrado una solución a este problema aquí en Stack Overflow pero ahora tengo otro problema que tratar.Cambiar el tamaño de la vista en el iPhone al girar

La vista gira cuando enciendo el dispositivo, pero todavía muestra la vista como si todavía estuviera en modo vertical (hacia arriba y hacia abajo). La parte superior e inferior de la vista está cortada. ¿Hay alguna manera de hacer que la vista gire y también ajustar su tamaño para adaptarse a la nueva orientación? También encontré this pero no pude hacerlo funcionar.

Aquí está mi código para ese punto de vista:

@implementation businessBank 
@synthesize webView, activityIndicator; 


- (void)viewDidLoad { 

    [super viewDidLoad]; 
    NSString *urlAddress = @"website_url"; 

    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 

    [webView loadRequest:requestObj]; 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(didRotate:) 
               name:UIDeviceOrientationDidChangeNotification 
               object:nil]; 

} 
- (void)didRotate:(NSNotification *)notification { 

    UIDeviceOrientation orientation = [[notification object] orientation]; 

    if (orientation == UIDeviceOrientationLandscapeLeft) { 
     [self.view setTransform:CGAffineTransformMakeRotation(M_PI/2.0)]; 
    } else if (orientation == UIDeviceOrientationLandscapeRight) { 
     [self.view setTransform:CGAffineTransformMakeRotation(M_PI/-2.0)]; 
    } else if (orientation == UIDeviceOrientationPortraitUpsideDown) { 
     [self.view setTransform:CGAffineTransformMakeRotation(M_PI)]; 
    } else if (orientation == UIDeviceOrientationPortrait) { 
     [self.view setTransform:CGAffineTransformMakeRotation(0.0)]; 
    } 
} 

Respuesta

3

A menos que tenga una aplicación muy básica que se extiende para que coincida con la orientación, auto-cambio de tamaño no va a funcionar bien para usted de todos modos - que realmente necesita para crear dos vistas separadas para las dos orientaciones.

Para obtener ayuda sobre el tamaño automáticamente puntos de vista, se puede comprobar este tutorial:

http://theappleblog.com/2009/04/08/iphone-dev-sessions-how-to-make-an-orientation-aware-clock/

Para utilizar el método más robusto de cambiar de vista, este tutorial le ayudará a cabo:

http://icodeblog.com/2008/08/03/iphone-programming-tutorial-transitioning-between-views/

+0

La aplicación muestra al usuario un grupo de botones que van a vistas separadas. Cada botón abre una vista que tiene UIWebView en él. Parece una aplicación bastante simple que sería fácil hacer rotar la página web, pero está tardando más de lo que esperaba. Básicamente quiero lo que Safari hace en un par de visitas. He mirado el ejemplo Clock anteriormente pero eso utiliza el código shouldAutorotateToInterfaceOrientation que rota cada vista no solo las que yo quiero. Crear vistas separadas para retratos y paisajes suena como si funcionara, pero ¿no restablecería el sitio web en el que se encuentra actualmente el usuario? –

+0

Debería poder mantener el estado de alguna manera, ya sea con una variable almacenando qué página web se está visualizando o creando UIWebView dinámicamente (en lugar de en el diseñador visual) y agregándolo a sus vistas según sea necesario (tras la rotación) . –

+0

Las vistas de web son enlaces a una página donde el usuario puede iniciar sesión y mirar sus cuentas bancarias. información Incluso si almaceno el sitio web en el que están, lo más probable es que cierren la sesión o (debido a que la información se proporciona dinámicamente, no en páginas web separadas), no aparecerá donde estaban antes. Realmente solo necesito una forma de rotar la vista web al paisaje exactamente como shouldAutorotateToInterfaceOriention ... simplemente no en cada vista. Frustrante. –

Cuestiones relacionadas