Pregunta

Estoy usando este .

He puesto esto en donde se añaden las imágenes:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

He puesto estas anulaciones en SlideShowViewController:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

El primero se llama, pero no el segundo.

No estoy usando una punta; que utiliza un inicio personalizada que devuelve un self.view con las 3 imágenes en él.

Me estoy perdiendo algo? ¿Cuál sería la mejor manera de modificar el script para obtener las fotos del paisaje se extienden a lo ancho cuando el iPhone es girado por el usuario?

Editar: Sólo trató añadiendo willAnimate ... para el controlador de vista raíz de mi NavigationController, pero no es invocada. Tal vez el NavigationController es el problema? En ese caso, ¿dónde pongo el willAnimate ...? Por otra parte, ¿cómo lo reciba y transmita los mensajes enviados a la directa hacia la viewController visible?

Editar 2: La causa del error en el tema fue que el tabBarController faltaba una conexión de IB (que yo estaba seguro estaba allí). Así que ahora mi problema es el mismo que para algunas otras preguntas similares - willAnimate ... que se llama en la raíz VC pero no en los VC empujadas. El código que he usado se desvanece en la galería de VC en lugar de deslizarse en ella, es decir. no es empujado pero actualmente añade como subvista a la ventana -. para llenar toda la pantalla

Sugerencias para mensaje de que la controladora de subvista para establecer los marcos sería apreciada, o soluciones alternas!

¿Fue útil?

Solución

Esto no es una respuesta a por qué su "willAnimateRotation .." -. Método no hace gatillo, pero en lugar de cómo una alternativa a la galería de imágenes se puede adaptar a sí mismo rotaciones

En initWithImages añaden:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

Añadir este método de recibir la notificación. En didRotate que puede manejar el cambio de tamaño de un reposicionamiento de las imágenes.

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

No se olvide de cancelar el registro de la notificación en dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

También me permito sugerir que utilice un UIScrollView vez de manejar el desplazamiento y gestos mismo?

Otros consejos

es SlideShowViewController empujado directamente sobre la pila regulador de la navegación, o es parte de algún otro punto de vista? Los métodos UIView delegado reciben clase de mal estado cuando se trabaja con subvistas de puntos de vista sobre la pila regulador de la navegación.

Si SlideShowViewController es sólo una vista secundaria de algún otro punto de vista que ha sido inserta en la pila regulador de la navegación, me gustaría tratar de escuchar a este método en el controlador de vista de que es en realidad en la pila regulador de la navegación, y después de llamar al método apropiado en SlideShowViewController desde allí.

He tenido un problema similar en conseguir viewWillAppear y un método similar llamado dentro de un controlador de navegación.
He resuelto llamando manualmente cuando se llama al método de la raíz.
No sé si es el mismo problema con la rotación, pero es posible que trate de poner en su vista raíz controlador

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

Esta pregunta era un poco difícil de responder supongo, ya que estaba a punto de mi programa de instalación de aplicaciones no rudimentaria específica. Lo siento por dejar que el tiempo de recompensas agotado, básicamente era demasiado tarde el mismo día le pregunté;)

Yo pensé que había puesto este 'no enterrado en los comentarios' para cualquier persona que obtiene los mismos síntomas.

La primera fue que me di cuenta de un IBOutlet que estoy seguro que he conectado en un momento dado ya no estaba conectado (Controlador de barra de pestañas -> tabBarController objeto). Ya que estaba devanando los sesos y cosas mover para hacer este trabajo, esto probablemente se debió a mí tratando algo y luego restaurar una copia de seguridad.

Segunda parte de la solución era addSubview la vista galería a la opinión del tabBarController en lugar de la navegado a la vista. A continuación, se invocan los métodos shouldAuto ... y willAuto del controlador de vista raíz.

(Para ocultar la barra de pestañas y la barra de navegación mientras gira que tenía que ajustar su alpha a 0 mientras se visualiza la galería, de lo contrario el navegado a la vista que estaba oculto en parte bajo la barra de navegación al volver a ella. Yo NO se han encontrado forma de ocultar la barra de estado mientras se muestra la galería.)

Después de esto, hubo una solicitud para que la galería en un detalle en vista navegado a partir de otra ficha, y me dio el error complicado que sólo mientras que el otro (de trabajo) Detalle de visión se muestra debajo de la otra pestaña se autorotate trabajo con la nueva galería. Se pondrá en contacto con la solución a esto, el tiempo quittin.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top