¿Aparecen las celdas del UITableView
programa en el espacio vacío cuando te desplazas hacia abajo?
Si es así, entonces el problema podría ser la inserción que se agrega al UITableView
controlador de navegación que tiene en su vista. El recuadro se agrega a la vista de tabla para que el contenido se coloque debajo de la barra de navegación cuando no se ha producido ningún desplazamiento. Cuando se desplaza la tabla, el contenido se desplaza y se muestra debajo de una barra de navegación transparente. Por supuesto, este comportamiento solo se desea si la vista de tabla comienza directamente debajo de la barra de navegación, que no es el caso aquí.
Otra cosa a tener en cuenta es que iOS ajusta el contenido de contenido solo para la primera vista en la jerarquía de vistas si es UIScrollView
o es descendiente (por ejemplo, UITableView
y UICollectionView
). Si su jerarquía de vistas incluye múltiples vistas de desplazamiento, automaticallyAdjustsScrollViewInsets
realizará ajustes solo en la primera.
Aquí se explica cómo cambiar este comportamiento:
a) Generador de interfaz
- Seleccione el controlador de vista
- Inspector de atributos abiertos
Hay una propiedad llamada "Ajustar inserciones de vista de desplazamiento" en el inspector de atributos de IB (cuando se selecciona un controlador de vista) que está activada de forma predeterminada. Desmarca esta opción:
(Imagen cortesía de Dheeraj D )
No estoy seguro de qué versión de Xcode introdujo esta opción (no la detectó en las notas de la versión), pero al menos está disponible en la versión 5.1.1.
Editar: para evitar confusiones, esta fue la tercera opción mencionada en los comentarios
b) programáticamente
Agregue esto a ie viewDidLoad
(créditos a la respuesta de Slavco Petkovski y al comentario de Cris R )
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Esto podría ser relevante para los niños de edad escolar
Puedes arreglar esto agregando
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
O si está utilizando IB y si la barra de navegación no es transparente (no se puede ver en la captura de pantalla)
- Seleccione el controlador de vista
- Inspector de atributos abiertos
- En la sección Ver opciones del controlador Extender bordes, anule la selección de "Bajo las barras superiores"
Tuve este mismo problema y estoy bastante seguro de que tuve una UIView allí en un momento. Simplemente copiando toda la vista de tabla, eliminándola y pegándola nuevamente, me lo arregló.
fuente
Seleccione la vista de tabla en su guión gráfico y asegúrese de que el estilo esté configurado en "Normal", en lugar de "Agrupado". Puede encontrar esta configuración en la pestaña Inspector de atributos.
fuente
En mi caso, tenía un UILabel bajo la jerarquía UITableView en vista.
Lo moví "hacia adelante" y apareció el espacio en blanco. No estoy seguro de por qué, pero funciona así, si hay algo debajo de tableView, oculta el espacio en blanco.
También puede intentar marcar / desmarcar "Ajustar recuadros de vista de desplazamiento" en el inspector del controlador de vista en el guión gráfico.
fuente
NINGUNO de los anteriores me ayudó. pero hacer esto ayudó :
en lugar de '-64' puede poner cualquier otro número dependiendo de la altura de su barra de navegación.
fuente
Puede haber pre-agregado
UIRefreshControl
. Tengo este problema con un código como este:Como ves, me puse
self.refreshController
inmediatamente despuésinit
Pero, si configura
refreshControl
después de la configuración, entonces el espacio superior no lo interfiere.fuente
Si está haciendo esto en iOS 11, AutomaticAdjustsScrollViewInsets no funcionará porque está en desuso, el siguiente código funcionó para mí según la respuesta en esta publicación: https://stackoverflow.com/a/44391269/5476481
Espero que esto ayude.
fuente
En el Guión gráfico, configure el
contentInsets
de sutableview
en Nuncafuente
No puedo decirlo con certeza, pero parece que tienes una UIView extra atrapada entre donde comienzan las celdas prototipo y la parte superior de UITableView. Mi imagen se ve exactamente como la suya si elimina el texto / líneas que agregué.
fuente
Todavía no estoy seguro de qué causó ese espacio adicional en la parte superior, pero descubrí que eliminar UITableView con el espacio y reemplazarlo por uno nuevo eliminaba el espacio.
Debo haber arrastrado una UIView allí accidentalmente, pero no pude seleccionarla, así que no pude eliminarla.
fuente
Swift 5
Prueba con remove tableHeaderView y tableFooterView
fuente
Verifique su marco de vista de tabla en storyboard o xib. El mío por defecto tiene un valor de posición ay, de ahí el error
fuente
En mi aplicación también he experimentado un problema como este. He configurado el recuadro del borde superior de tableView zero. También intentado establecer
false
paraautomaticallyAdjustsScrollViewInsets
. Pero no funcionó.Finalmente obtuve una solución de trabajo. No sé, esta es la forma correcta. Pero implementar el
heightForHeaderInSection
método delegado funcionó para mí. Debe devolver un valor distinto de cero para que funcione (el retorno cero mostrará el mismo espacio que antes).fuente
En 2017, lo que funciona para mí es simplemente esta línea
navigationController? .navigationBar.isTranslucent = false
No tengo idea de por qué eso lo afectaría. Quizás alguien podría explicarlo. Pero estoy bastante seguro de que esta es la respuesta que la mayoría de la gente buscaría.
fuente
En iOS 11 y superior, Apple ha cambiado la propiedad para ajustar el contenido. Uso
contentInsetAdjustmentBehavior
y ajuste.never
para eliminar el espacio extra por encimaUICollectionView
,UIScrollView
,UITableView
.Espero que esto ayude.
fuente
Bueno, para mí el problema ocurrió cuando arrastré una celda prototipo del menú a la vista de tabla. Así que eliminé eso y solo configuré la celda prototipo en 1 en las propiedades del inspector de vista de tabla
fuente
Estoy haciendo esto mediante programación, y simplemente moví mi addSubview (tableView) al final después de agregar todas mis otras subvistas, ¡y resolvió mi problema!
No estoy seguro de por qué esto solo aparece en el dispositivo y no en mi simulador, ¡pero de cualquier manera al menos hay una solución simple!
fuente
Mientras UITableView no sea la primera subvista del controlador de vista, el espacio vacío no aparecerá.
Solución: Agregue un objeto de vista oculto / claro (vistas, etiquetas, botón, etc.) como la primera subvista del controlador de vista (al mismo nivel que UITableView pero antes).
fuente
UIView se puede insertar en la parte superior e inferior de la tabla (arrastrar y soltar). Establezca sus propiedades como transparentes y con una altura de 1 px. Esto es para eliminar el relleno adicional en frente de las celdas.
fuente
También tuve este problema, tableView no era la última vista en la jerarquía. En mi caso, tenía una vista superior (aunque no se superponían entre sí), así que la arrastré por encima de la tabla Vista en la jerarquía y eso fue todo.
fuente
Acabo de encontrar una solución para esto.
Simplemente seleccione tableview y haga clic en Editor -> Organizar -> Enviar al frente
Funcionó para mí y espero que los ayude a todos.
fuente
En mi caso, estaba usando ContainerViewController y ponía UITableViewController en él. Después de eliminar ContainerViewController. Los problemas desaparecen.
fuente
Error de Xcode 8 ...
Pruebe esto primero si su estilo de Storyboard UITableView está configurado en Normal.
Establezca el estilo de la tabla en Agrupado y luego nuevamente en Normal. Esto eliminó el espacio en mi aplicación en la cabeza de mi UITableView.
fuente
En mi caso, estaba usando una vista de contenedor. (Vista principal -> Vista de contenedor -> UITableView)
El espacio extra en la parte superior, creo, es como el espacio de la barra de notificaciones del dispositivo (donde se muestra el tiempo, la batería). Realmente lo hago, no es una suposición.
Lo que hice fue de UI Builder:
fuente
Puede usar este código en viewDidLoad o viewDidAppear donde se está creando su tabla:
fuente
I just found a solution for this. In my case, i was using TabBarViewController, A just uncheck the option 'Adjust Scroll View Insets'. Issues goes away.
https://i.stack.imgur.com/vRNfV.pngfuente
configure los bordes extendidos de ViewController en el guión gráfico para que la
underTopBar
propiedad no esté marcada.fuente
Estaba teniendo el mismo problema. Lo resolví agregando lo siguiente para viewDidLoad.
fuente
Establezca las inserciones de contenido en cero:
fuente
comprobar
fuente