Actualmente estoy migrando mi aplicación en ios 7 y he estado atascado durante horas en el nuevo control de navegación / gestión de barras.
Antes, cuando teníamos un controlador de navegación, teníamos un fragmento como este:
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
En el generador de interfaces, teníamos la opción de establecer una barra de navegación existente para la vista y todo coincidía con el contenido de la vista real.
Bien, ahora no tengo idea de cómo diseñar correctamente con el generador de interfaces. Todavía tengo mi fragmento para inicializar mi navcontroller. Sin embargo, en el generador de interfaces para mi MainViewController, si configuro una barra de estado en una barra de navegación translúcida u opaca, tengo un desplazamiento de 44 px en la parte superior (ver más abajo).
Interface Builder_________________________Y el resultado
Ahora, si configuro la barra de estado en ninguno, no hay desplazamiento en la parte superior, pero dado que la vista en el simulador es más pequeña debido a la barra de navegación, la parte inferior de la vista en el generador de interfaces está cortada.
Interface Builder_________________________Y el resultado
Supongo que realmente me falta algo aquí, pero no puedo encontrar ningún tema o información de Apple en la Guía de transiciones de iOS7 sobre eso.
Gracias por tu ayuda
EDITAR
Como podemos ver en las imágenes, el primer elemento secundario de la vista es un UIScrollView que contiene ambas etiquetas, el problema no aparece cuando no hay una vista de desplazamiento. También aparece si es un UITableView. Si una etiqueta está fuera de UIScrollView, no hay desplazamiento en esa etiqueta.
Respuestas:
OK, así que encontré la solución, configuré en mi controlador la propiedad:
Sin embargo, realmente no entiendo el verdadero beneficio de esta propiedad (o por qué el valor predeterminado es verdadero)
La única documentación que encontré estaba allí:
Actualizar
En iOS 11
automaticallyAdjustsScrollViewInsets
está en desusoAhora deberías usar:
También le animo a que consulte esta pregunta y su respuesta para comprender mejor esas propiedades.
fuente
UIScrollView
desplace. Pero sin esto no puedo deshacerme del desplazamiento. Weired ...La respuesta de @Justafinger también funcionó de maravilla para mí.
Solo quería agregar que esta configuración también se puede ajustar fácilmente desde el generador de interfaces.
fuente
Me encontraba con este mismo problema, pero encontré una propiedad bastante extraña en el ViewController en el generador de interfaces que parece haberme causado esto. Hay un conjunto de casillas de verificación "Extender bordes". Eliminé la verificación "Debajo de las barras superiores", y todo comenzó a diseñarse correctamente para mí.
fuente
Con automaticAdjustsScrollViewInsets establecido en YES (la configuración predeterminada), existe una discrepancia en el posicionamiento de la vista de desplazamiento entre ios6 y ios7, por lo que para que sean coherentes debe deshabilitar esta configuración. Sin embargo, ios6 se bloqueará si aparece automáticamente AjustaScrollViewInsets, por lo que debe realizar un cambio programático de condicionalAdjustsScrollViewInsets condicional en ios7 o desactivar la opción usando el guión gráfico / NIB
fuente
Tuve un problema similar, después de descartar un viewController, el contentOffset de mi tableView se cambió a (0, -64).
mi solución fue un poco extraña, probé todas las otras respuestas pero no tuve éxito, lo único que solucionó mi problema fue cambiar la posición tableView en el árbol de controles del .xib
fue el primer control en la Vista principal así:
Moví el tableView justo después del ImageView y funcionó:
parece que poner la vista de la tabla en la primera posición estaba causando el problema, y mover la vista de la tabla a otra posición solucionó el problema.
PD No estoy usando autoLayout ni storyboards
¡Espero que esto pueda ayudar a alguién!
fuente
También me enfrento a este problema.
UIScrollView
El tamaño del contenido es calculado por el sistema operativo como otros tamaños, orígenes proporcionados por el sistema de restricción; es por eso que el sistema operativo tiene dudas.Cómo solucionarlo: debe definir explícitamente el tamaño del contenido de
UIScrollView
:UIView
(le cambio el nombreContentView
)ContentView.Weight = View.Weight
yContentView.Height = View.Height
fuente
Parece que una solución alternativa es ver el archivo del guión gráfico como "iOS 6.1 y versiones anteriores" (seleccione el archivo del guión gráfico-> Inspector de archivos-> Documento del Generador de interfaz-> Ver como. Colocar subvistas en este modo muestra el desplazamiento.
fuente
¡Gracias a todos por las soluciones! Luché durante horas tratando de resolver el problema. Todo estaba bien cuando no había ninguna barra de navegación involucrada, pero se volvió loco en el momento en que incruste el ViewController en un NavigationController.
Lo resolví desmarcando los recuadros Ajustar vista de desplazamiento y las barras inferiores superiores . Ambos se encuentran en el Inspector de atributos de ViewController. ¡Un millón de gracias!
fuente