2012-05-03 10 views
6

Quiero que cambie la orientación de navegación de mi UIPageViewController cuando cambio la orientación de mi UIViewController. Es decir, cuando el dispositivo se gira a vertical, quiero que navigationOrientation cambie de UIPageViewControllerNavigationOrientationVertical a UIPageViewControllerNavigationOrientationHorizontal.iPad: UIPageViewController navigationOrientation

Intenté configurar la propiedad navigationOrientation en la rotación del controlador de vista pero encontré que la propiedad navigationOrientation es de solo lectura.

Aquí están las imágenes que yo quiero.

paisaje Ver Landscape View

Retrato Ver enter image description here

¿Qué debo hacer?

+0

uso debe utilizar el autoresize en xib. – vishiphone

+0

@vishiphone: ¿Cómo el autorizar ayudaría a su problema? ¿Entendiste que quiere que la división de la página cambie de vertical a horizontal? –

+0

@ParthBhatt Creo que solo quiere rotar la orientación Ver como porque solo su imagen y pregunta así. – vishiphone

Respuesta

3

Buena pregunta.

No sé por qué, pero parece que Apple no quiere que cambie esa propiedad. Ya sea por razones técnicas o algún tipo de guía de UI.

De todos modos, si no se puede cambiar la orientación hay que ir con un enfoque diferente y utilizar dosUIPageViewControllers, cada una con otra orientación de navegación, que comparten un delegado. En el dispositivo, enciende/oculta las vistas correspondientes o inicia/suelta un nuevo objeto que gira cada dispositivo.

BTW. ¿Has echado un vistazo al método pageViewController:spineLocationForInterfaceOrientation: del delegado? Parece como si la forma preferida de Apple de reaccionar a la orientación del dispositivo cambia es la siguiente:

Discusión Utilice este método para cambiar la ubicación de la columna vertebral cuando los cambios de orientación dispositivo, así como el establecimiento de nuevos controladores de vista y cambiantes el estado de doble faz.

Este método se invoca solo si el estilo de transición es UIPageViewControllerTransitionStylePageCurl.

Tenga en cuenta que la aplicación de calendario de Apple va con páginas muy delgadas en el retrato, parece ser realmente su idea de la interfaz de usuario.

+0

Sí, la vista de calendario de Apple se puede hacer eliminando "if (UIInterfaceOrientationIsPortrait (orientation))" –

+0

No sabe exactamente lo que quiere decir, pero la aplicación de calendario ** does * * reaccionar en el cambio de orientación del dispositivo. Cambia la vista (controladores) para cada página cuando el dispositivo gira.Puede verlo en la vista general mensual cambiando de página de izquierda a derecha. –

+0

@Devang Hola Devang, necesito algo similar a tu requerimiento. Lo que estoy haciendo es tener cinco controles de vista agregados en una matriz y usar el controlador de vista de página para mostrar dos vistas en la pantalla a la vez como lo hizo en la primera imagen. Estoy arreglando la vista de paisaje para mi aplicación. Lo que quiero es después de mostrar cuatro controladores de vista que mostrarán el controlador de vista única en el paisaje. ¿Puedes guiarme por eso? Mi función de descanso solo se ha realizado en esta parte que aún no he podido resolver. –

0

resuelvo este problema de una manera ligeramente diferente, heredé clase UIPageViewController y anular la initWithCoder de la siguiente manera:

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    NSDictionary *options = nil; 

    if ([self isLandscapeOrientation]) 
    { 
     options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:UIPageViewControllerSpineLocationMid] forKey:UIPageViewControllerOptionSpineLocationKey]; 
    } 

    self = [super initWithCoder:aDecoder]; 

    return [super initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:options]; 
} 

- (BOOL)isLandscapeOrientation 
{ 
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 

    return UIInterfaceOrientationIsLandscape(orientation); 
} 
Cuestiones relacionadas