Objetivos del blog.
Después de leer este blog, podremos comprender el motivo del espacio adicional entre la barra de navegación superior y la Vista de desplazamiento en la aplicación iOS en las versiones iOS 7 a iOS 10.
Planteamiento del problema
Cuando agregamos una vista de desplazamiento o una vista de tabla (cualquier vista desplazable) en un controlador de vista que contiene una Barra de navegación en la parte superior, nos enfrentamos a un problema común que es un espacio adicional entre la Barra de navegación superior y la Vista de desplazamiento.
¿Por qué el problema actual está ahí?
Desde iOS 7 a iOS 10, cuando agregamos una barra de navegación encima de cualquier ViewController, Xcode nos brinda una opción para hacer que la barra de navegación sea translúcida. Para que podamos ver a través de la barra de navegación y el desplazamiento de la página se puede ver a través de la barra de navegación.
Ahora el motivo del problema es que cuando se agrega una Vista de desplazamiento en el Controlador de vistas y la Barra de navegación está configurada y es translúcida, la Vista de desplazamiento deja un margen de la vista principal para la barra de navegación. Pero la barra de navegación se agrega al tiempo de ejecución y mueve la vista principal hacia abajo para que la barra de navegación pueda caber en la parte superior. En ese caso, la vista se desplaza hacia abajo mediante la barra de navegación y la vista de desplazamiento deja margen para la barra de navegación. Aquí observamos que el espaciado extra añadido dos veces.
Esta fue la única razón por la que vemos espacio adicional entre la barra de navegación y la vista de desplazamiento.
Procedimiento para resolver el problema.
Hay dos formas de resolver el problema. En ambos casos, restringimos la vista de desplazamiento para dejar un margen adicional para la barra de navegación.
1.Podemos configurar la opción Translúcida para la barra de navegación en "Falso" en Xcode
? This will make the navigation bar Opaque and then the scroll view is not required to scroll under the Navigation Bar. So that Scroll View will leave no space for Navigation Bar.
En el siguiente Gif puede ver que la restricción de diseño de la vista cambia cuando habilitamos / inhabilitamos la propiedad "Translúcida" de la barra de navegación.
2.Podemos deshabilitar "Ajustar inserciones de vista de desplazamiento"propiedad del ViewController.
? This will restrict the Scroll View to leave extra space for the Navigation bar on top.
Resumen
Después de seguir el procedimiento anterior, podrá eliminar el espacio adicional entre la barra de navegación y la vista de desplazamiento.