Hacer que la barra de navegación no empuje hacia abajo el contenido

He estado buscando por todas partes una solución a este problema, pero no puedo encontrar una...

Tengo un UIImageView similar a facebooks donde, si tocas la pantalla, aparecerá el texto de la imagen y la UINavigationBar. El problema es que UINavigationBar empuja todo el contenido hacia abajo cuando aparece...

¿Hay alguna manera de poner esto en una capa independiente más alta o algo más que haga que no afecte el resto de la vista?

Gracias de antemano.

preguntado el 25 de agosto de 12 a las 11:08

2 Respuestas

Supongo que cuando el usuario toca ImageView, es su código el que está presionando. Lo que debe hacer es usar el método 'presentViewController:' de UIViewController. Tiene algunas opciones sobre cómo se producirá la animación y, aunque esta vista ocupará la pantalla, no se "empujará" ni parecerá estar "empujada". En este caso, la nueva vista es controladora por su propia subclase UIViewController. [Uso esta técnica.]

Las otras opciones son mirar '+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)opciones de duración:(UIViewAnimationOptions)opciones de finalización:(void (^)(BOOL terminado) de UIView )completion' y gire una nueva vista a la vista. Su controlador de vista original también controlará esta vista, puede hacer lo que quiera, luego, cuando termine, el usuario toca algo y vuelve a la vista original. [Yo también uso esta técnica].

EDIT:

La solución a su problema aclarado en el comentario es establecer la propiedad en la barra de navegación en transparente. En iPad ahora no hay Xcode a la mano, pero lo verá en la descripción de la clase.

Respondido 26 ago 12, 14:08

No estoy en casa en este momento, pero intentaré registrarme en un par de horas. :) - tom

Lo siento por la mala explicación... Con empujar no me refiero a un seguimiento, sino más bien a la forma figurativa de que todo el contenido de las vistas se mueva en la dirección y para "hacer espacio" para la UINavigationBar. Lo que quiero es simplemente hacer que UINavigationBar se superponga al resto del contenido. - tom

Como no pude encontrar una manera de hacer que el contenido fuera indiferente a si la barra de navegación estaba allí o no, simplemente subí el contenido 22px (la altura predeterminada de una UINavigationBar) al mostrar la barra. Esto resolvió mi problema perfectamente.

Respondido 28 ago 12, 14:08

La altura predeterminada de UINavigationBar es 44px en modo vertical y 32px en modo horizontal. - Tomas Kekeisen

Quizás se refería a 44 píxeles en términos de diseño de gráficos de retina... 22 píxeles en términos de moverlo mediante código .center = CGPoint - alberto renshaw

Hmmm, bueno, eso es raro, para mí era 66px en retrato. Hahhaa... entonces de nuevo eso está en un iPhone5? -(void)viewDidAppear:(BOOL)animated { theMainContentViewHolder.frame = CGRectMake(0, -66, theMainContentViewHolder.frame.size.width, theMainContentViewHolder.frame.size.height); } - alberto renshaw

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.