De partida en iOS7, hay espacio adicional en la parte superior de mi UITableViews de que tienen un estilo UITableViewStyleGrouped.

Aquí está un ejemplo:

¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

El formato tableview comienza en la primera flecha, hay 35 píxeles de inexplicable relleno, luego la cabecera verde es un UIView devuelto por viewForHeaderInSection (donde la sección es 0).

¿Alguien puede explicar donde esta el 35 cantidad de pixels viene y cómo puedo deshacerme de él sin tener que cambiar de UITableViewStylePlain?

  • ¿estás usando la última iOS 7? Algunos de estos TIPOS de inconsistencias (pero no todos, y tal vez no este) se han curado durante la tarde dev vistas previas. Que debo saber: que me demoraron tanto algunos de los problemas desaparecieron.
  • La respuesta del cheque aquí – stackoverflow.com/a/18986158/1463604
  • Respuesta corta es que este relleno adicional se debe probablemente a la vista de la tabla de cabecera (no el encabezado de la sección), y que UITableView no le gusta ser asignado un encabezado con una altura de 0.0. Verificar stackoverflow.com/a/31223403/1394534 para más detalles.
  • self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 0.0f, CGFLOAT_MIN)]; nota: 0.0f es sólo ignorado si se utiliza en la altura de la rect. Así que usar el más cercano a cero CGFloat posible (al menos este «trabajado» para mí… no sólo en la solución ideal).
  • su comentario hizo que mi noche. Tengo un formato tableview con agrupados prototipos. Estoy usando numberSections = datos.del recuento y de la configuración de numberRows = 1. Me puse un heightForFooterInSection a hacer una limpia de espacio entre cada una y por alguna razón en blanco tableHeaderView apareció.
  • Muchas gracias! Aunque yo estoy usando un storyboard, la sugerencia de abajo se trata de desactivar el desplazamiento ver recuadro no funciona.
  • Usted está utilizando Agrupados UITableView — usted debe utilizar Llano – Esto va a deshacerse del exceso de relleno.
  • Te has fijado tableFooterView a una vista vacía? Este es un típico hack para el llano de las vistas de tabla para eliminar el exceso de celdas vacías que se agregan cuando no hay suficientes células para llenar toda la pantalla. En ese caso, la solución es simple: ese hack no es necesario para que agrupan las vistas de tabla, así que usted puede eliminar de forma segura y permita que tanto tableHeaderView y tableFooterView conjunto para nil.

InformationsquelleAutor esilver | 2013-09-18

59 Comentarios

  1. 856

    Fue ayudado por el siguiente:

    YouStoryboard.guión > YouViewController > Atributos del inspector de > Desmarque – Ajuste de desplazamiento de la vista de inserciones.

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    • Creo que esta es la manera correcta de eliminar el relleno, en lugar de tratar de forzar con edgeInset valores.
    • Esta parece ser la forma correcta de hacerlo – es eliminado el espacio en la parte superior sin tener que configurar ningún edgeInsets o encabezado alturas etc.
    • Esto no funciona para mí-tengo una opaco barra de navegación de arriba y esta apagado empuja el contenido debajo de ella.
    • Esto sin duda funciona, pero alguna idea de por qué?
    • No funciona cuando el uso personalizado de collectionview. (Cuando en formato tableview está dentro de collectionviewcell)
    • Esto funcionó muy bien para mí para un UITableView dentro de un UIViewController (que sólo ocupa la mitad superior de la pantalla) en iOS 8
    • Esto debe ser aceptado respuesta. En cuanto a los «por qué», tengo la teoría de que el «ajuste…» trabaja en conjunto con el Extender los Bordes de las propiedades. Lo que significa que si usted se permite la ampliación de los bordes en la parte superior de la barra y tiene un desplazamiento de la vista que se inicia desde la parte superior, es probable que no desee que sus contenidos a ser cubiertos por la parte superior de la barra. Así que el VC ajusta los márgenes de forma automática, de manera que el contenido pasa por debajo de la parte superior/inferior de barras sólo cuando se desplaza. Por supuesto, esto no es cierto si el scrollView (formato tableview) se alinea con la parte superior con la parte superior guía de diseño, no el superview.la parte de arriba.
    • No trabajo para mí; Sólo cosa de la que se trabajó fue de conmutación sin formato en lugar de Agrupados
    • Tenga en cuenta que este atributo es el que encierra UIViewController, no en el formato tableview sí mismo.
    • trabajó para mí, gracias
    • alternativelly con el código: self.automaticallyAdjustsScrollViewInsets = NO;
    • Esto funciona bien para mi caso, también con un opaco navigationbar.
    • Esto no funciona para mí, irónicamente, tengo dos tableviewControllers se muestra desde el contenedor de vistas. Uno aparece como se esperaba, el otro tiene el espacio molesto como el infierno
    • He tenido este problema con un TableViewController en el interior de un contenedor de vista. Tuve que establecer esta propiedad no directamente en el TableViewController que fue incorporado, pero en el controlador de vista de la contenida en el recipiente de vista. Luego se trabajó.
    • Funcionó bien para mí con un formato tableview dentro de un UIViewController.
    • Este trabajó para uno de mi punto de vista original de los controladores. El nuevo problema para mí fue que se agrupan en lugar de la llanura
    • Probablemente funcionaba antes, pero es que no trabajan con Swift / XCode 8.3.2. Compruebe D. T de la respuesta.
    • self.automaticallyAdjustsScrollViewInsets = NO. es la solución. La explicación está aquí: useyourloaf.com/blog/extra-space-when-embedding-table-views/z
    • Esta opción existe simplemente para molestar?
    • el enlace no es válido ahora. He buscado en ‘espacio extra’ palabra clave ‘ en useyourloaf ‘s de la sección de archivo. si alguien quiere este enlace de búsqueda de esta manera.
    • Yo lo que no funciona, pruebe el formato tableview.contentInset.top = -44
    • El problema también pasa por una aplicación para el iPhone en un iPad en iOS 10, donde la barra de estado en la parte superior y no en la presentación de la aplicación para iPhone de la parte de la pantalla. Esta solución funciona!
    • También soy de las que se enfrenta el mismo problema(tengo en formato tableview dentro de la colección de la vista). Cómo se resuelve eso?
    • no trabajo para mí
    • «No funciona cuando el uso personalizado de collectionview. (Cuando en formato tableview está dentro de collectionviewcell) – Akshit Zaveri Jul 27 ’14 a las 12:16» por Favor, compruebe solución «nvrtd a la primera» a continuación. A mí me funcionó.

  2. 306

    He jugado un poco más y parece que este es un efecto secundario de la configuración del formato tableview del tableHeaderView = nil.

    Porque mi formato tableview tiene una dinámica que aparecen tableHeaderView, cuando necesito para ocultar la tableHeaderView, en lugar de hacer self.tableView.tableHeaderView = nil;, que debo hacer:

    self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];

    Me gusta esta solución mejor que la configuración de una forma un tanto arbitraria contentInset.top porque yo uso el contentInset.top dinámicamente así. Tener que recordar para quitar un extra de 35px siempre que recalcular contentInset.top es tedioso.

    • Gran solución! De hecho, tienes que ponerlo a 0,01 f para deshacerse de la tabla por defecto la vista de encabezado de la vista como en el código.
    • Por CIERTO, esto también es posible hacer con un drag & drop en el Interface Builder. De todos modos, gracias! 🙂
    • usted señor merece una medalla por esto
    • Impresionante, que trabajó para mí ..gracias
    • Genial!!! Gracias !
    • Ten en cuenta que una 0.01 f altura de la vista en la parte superior de la vista de la tabla significa que todas las células beaneath están desalineados (primera celda con tener un origen Y de 0.01, el siguiente de cell_height+0.01, etc) por lo que el contenido de esas células estén bien alineados. (Activar Debug > Color Misaligned Images en el simulador para ver esto por ti mismo.) Usted no quiere hacer eso.
    • Creo que esta es una mejor solución que el ajuste negativo (arbitrario) contentInsets, o desactivar la función de desplazamiento de la vista de inserciones. Sin embargo, usted necesita para hacer que la altura de la cabecera de la vista de al menos 1.f en orden para que funcione correctamente.
    • Es mejor usar UITableViewHeaderFooterView en lugar de UIView. Y CGFLOAT_MIN funciona de la misma como 0.01f pero mejor en la teoría.
    • Veo que no hay desalineación con Color Misaligned Images para las imágenes en las células por debajo de un tableHeaderView con la altura CGFLOAT_MIN en iOS8.4 el iPhone 6.
    • Esto funciona para mí mientras edgesForExtendedLayout no funciona.
    • La otra solución (ajuste auto.automaticallyAdjustsScrollViewInsets = false) no me funciona, pero esto funciona perfecto. Tenga en cuenta que es mejor utilizar CGFloat.min o 1.0 (y no 0.01), para evitar la desalineación de las imágenes, como se señaló más arriba
    • Esta solución, que hizo que mi día! gracias!!
    • Esto funciona para mí y creo que esta es la mejor solución, ya que fija la Vista directamente. Otras soluciones se aplican a la vista del controlador.
    • donde agregar esto?
    • Esto debe ser aceptado como respuesta.

  3. 177

    Para IOS 7 si allocing un formato tableview en un controlador de vista usted puede mirar en

    self.edgesForExtendedLayout = UIRectEdgeNone;

    su problema parecía similar a la mía

    Actualización:

    Swift en iOS 9.x:

    self.edgesForExtendedLayout = UIRectEdge.None

    Swift 3 :

    self.edgesForExtendedLayout = UIRectEdge.init(rawValue: 0)
    • Trabajó en mi llanura UITableView. Las cuestiones que se deriva del hecho de que mi UITableView fue en un UIViewController dentro de un UINavigationController que causó la tabla de contenido de lista desplegable 44 puntos para contenido inicial no estaba detrás de la navBar. Que no era necesaria con mi diseño, aunque, por lo que sólo es causado problemas. Con el tiempo he cambiado mi código para automaticallyAdjustsScrollViewInsets que trabajó también.
    • Esta propiedad sólo se aplica a la vista de los controladores que están incrustados en un contenedor como UINavigationController. La ventana raíz del controlador de vista de no reaccionar a esta propiedad. El valor predeterminado de esta propiedad es de todos. ..me siento como el valor por defecto debe ser 0? ¿De dónde viene esta tiene una ventaja.
    • Más elegante con Swift 3: edgesForExtendedLayout = []
    • Hola @yeahdixon Qué software usas para hacer la rosa de flecha ? gracias de antemano
    • Gracias. Esto funciona…
  4. 169

    Intente cambiar el contentInset propiedad que UITableView hereda de UIScrollView.

    self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);

    Es una solución, pero funciona

    • contentTableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0); funcionado mejor para mí porque había 20 píxeles extra en la parte superior y la parte inferior.
    • A pesar de esta «fuerza bruta» solución funciona, creo que los de abajo (específicamente automáticamente el ajuste de márgenes) debe ser el puesto más alto.
    • eso es trabajo para mí
  5. 132
    self.automaticallyAdjustsScrollViewInsets = NO;

    tratar, se puede tratar con él!

    • Esto no funciona si se utiliza un tableHeaderView, que esconde.
    • Esto funciona muy bien para ocultar el tableHeaderView en iOS 7.0, pero no es compatible con versiones anteriores.
    • Funciona muy bien en virtud de iOS 7.
    • Importante: asegúrese de hacer esto en el contenedor controlador de vista, si su UITableView se coloca en un controlador que está incrustado en otro controlador, hacer esto en la incrustación de la parte superior del controlador, no directamente el uno donde se coloca la UITableView (donde Autodiseño va a tomar el cuidado de las cosas).
    • Esto es mejor que uncheck Adjust scroll view insets. Porque a veces no usamos el guión gráfico para construir nuestra interfaz de usuario.
    • Esto funciona para mí. Os adjunto la vista a la barra de navegación y en formato tableview, no sucedió en iOS 11, pero ocurre en iOS 10. Gracias.
    • 'automaticallyAdjustsScrollViewInsets' was deprecated in iOS 11.0: Use UIScrollView's contentInsetAdjustmentBehavior instead
    • Este fue desaprobado en iOS 11.0. Xcode te avisará. El uso de este lugar, en el desplazamiento de la vista que usted no quiere que los márgenes se ajusta automáticamente en: self.tableView.contentInsetAdjustmentBehavior = .never

  6. 71

    Usted podría detectar si se está ejecutando la aplicación iOS7 o superior y añadir estos dos métodos en la tabla de la vista de delegado (generalmente en el UIViewController código)

    -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }
    
    -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }

    Esto tal vez no es una solución elegante, pero funciona para mí

    Swift versión:

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }
    
    override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }
    • Esto funcionó para mí. UITableView añade espacio en la parte superior para un montón de razones diferentes. Específicamente, los relacionados con la OP, el problema sólo ocurre para los agrupados estilo de tabla de la vista. Y esta solución se ha solucionado el problema.
    • Esto funcionó para mí también! Chapucero, pero eficaz…
    • Usted puede utilizar CGFLOAT_MIN en lugar de 0,001 le da el menor valor absoluto de CGFloat.
    • Esta es la respuesta correcta porque la verdadera característica es que el relleno no sólo en el agrupados estilo de tabla de la vista y se ignora si se especifica el encabezado/pie de página
    • Este debe marcar la respuesta correcta. Un delegado método para anular y contesta a la pregunta. Al menos a intentar esto primero si usted lee este lejos de todos los hacks. Trate de twitter : -(CGFloat)en formato tableview:(UITableView *)en formato tableview heightForHeaderInSection:(NSInteger)sección { //el retorno CGFLOAT_MIN; return 30.0 f; }
    • de trabajo como por arte de magia
    • Bueno! Como un bono, si usted desea un poco de encabezado en la parte superior y más entre los agrupan las secciones, puede utilizar el siguiente: override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return section == 0 ? 14 : 24 }

  7. 52

    He encontrado la causa original de mi error y ha creado un proyecto de ejemplo presentándolo. Creo que hay un iOS7 error.

    Como de iOS7, si crea un UITableView con el Agrupados estilo, pero no tiene un delegado en la primera presentación, a continuación, establecer un delegado y llame a reloadData, habrá un 35px espacio en la parte superior de que nunca va a desaparecer.

    Ver este proyecto me hizo mostrando el error: https://github.com/esilverberg/TableViewDelayedDelegateBug

    Específicamente este archivo: https://github.com/esilverberg/TableViewDelayedDelegateBug/blob/master/TableViewDelayedDelegateBug/ViewController.m

    Si la línea 24 se activa,

    [self performSelector:@selector(updateDelegate) withObject:nil afterDelay:0.0];

    habrá un extra de 35 px espacio en la parte superior. Si la línea 27 se activa y 24 se comenta,

    self.tableView.delegate = self;

    no hay espacio en la parte superior. Es como el formato tableview es el almacenamiento en caché de un resultado en algún lugar y no volver a dibujar a sí mismo después de que el delegado es el conjunto y reloadData se llama.

    • Me gustaría añadir que, incluso si hay un delegado, pero el delegado del tableView:heightForHeaderInSection: y tableView:heightForFooterInSection: devuelve 0 usted también tendrá este problema. La aplicación de los métodos de protocolo de arriba Y volviendo 0.01 f fijo para mí.
    • SÍ!! He intentado 3 llamados de soluciones, y este fue el uno! Genial, gracias 😀
    • Me ha ayudado mucho 🙂
    • perfecto. Nadie informó de un error porque creo que esta no es la intención de comportamiento.
    • gran hallazgo! Esto sucede aún en ios 9 (no estamos usando XIBs) pero, el delegado en init fija el espaciado (no en loadView o viewDIdLoad). Gracias!
    • gran depuración, gracias. IMO la solución de ajuste de la tableHeaderView es el más portátil y autónomo.
    • Esta es la respuesta correcta! Lamentablemente en iOS 11.3 el error persiste.
    • Configuración de estimatedHeight de cabecera me ayudó

  8. 49

    Desmarque la opción «Ajuste de Desplazamiento de la Vista de inserciones»

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    • Gracias por esta magia negra!
    • Necesitaba esta opción para otro Controlador de Vista de la mía, y al parecer, cuando hice un nuevo VC, el cambio se realiza. Gracias por esto!
    • Yeah! Funciona, justo ponerlo en ContainerView y funciona!
  9. 45

    Otro comentario rápido… incluso en XCode 6.1, hay un error con espacios verticales que aparecen en la parte superior de UIScrollViews, UITextViews y UITableViews.

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    A veces, la única manera de solucionar este problema es ir en el Guión gráfico y arrastre el problema de control de modo que no se trata de la primera subvista en la página.

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    (Mi agradecimiento a Oded para que me apunta en esta dirección… voy a postear este comentario, sólo tiene que añadir un par de capturas de pantalla, para demostrar los síntomas y corregir.)

    • Tenga en cuenta que este error, errrr, problema también ocurre en iOS 8 si tiene un UITextView como el primer sub-control en su página… así que no es sólo un UITableView problema.
    • Gran descubrimiento..
    • Yo tenía este problema incluso en iOS 8.3 y Xcode 6.3. Mi formato tableview comenzó con un contenido desplazamiento de 20px. He resuelto siguiendo tus consejos y agregar un espacio en blanco UIView a continuación el formato tableview como tal: UIView *blankView = [[UIView alloc] initWithFrame:self.view.bounds]; blankView.backgroundColor = self.view.backgroundColor; [self.view addSubview:blankView]; self.tableView = [UITableView alloc] init.... etc.
    • De todos, sólo este hack funciona para mí. Un extraño solución a un extraño error. Me he enfrentado a este problema con UITableview.
    • 1 millón de gracias! Esta es la única solución que funcionó para mí.
    • Me alegro de que trabajó para usted ! No te olvides de hacer clic en la «flecha arriba» votar a favor de esta respuesta, si es ayudado a usted.
    • Hay sólo una cosa que decir a esto: LOL. Y no es el gracioso tipo de LOL, es el «give me back 2 horas de mi vida LOL»
    • Molesto esto realmente hizo una diferencia – la Presentación de un informe de error con Apple
    • Gracias funciona para mi por cable relleno problema…
    • (Estoy asombrado de sus 18 meses más tarde, y los lectores son todavía votación de esta respuesta. Tiene Apple en serio no se fija este tema ?!)
    • me salvó la vida! gracias. ¿sabe usted cuánto tiempo se tardó en encontrar este pequeño y simple «corrección»? grrh.
    • Pablo: Patético, ¿no ? Los más ricos de la empresa de tecnología del mundo, y Xcode es todavía tan terriblemente mala, y el usuario poco amigable como siempre. Nuestra única esperanza como entramos en el 2017 es que Microsoft finalmente se Xamarin estable en el último (gasp!) así que no tenemos que lidiar con Xcode ya…!
    • Mismo problema con Xcode 8.2.1. Así que ten cuidado con los componentes de la jerarquía.
    • Confirmo que este problema es increíblemente todavía sucede con Xcode 8.3.2 (Swift 3). El fix funciona! Muchas gracias!
    • Es Sep 2017 y este problema sigue sucediendo con Xcode 9 (Swift 3) (build target IOS 9 tiene un problema, objetivo de IOS 11 es ACEPTAR). El fix funciona como un encanto!
    • No entiendo su solución. arrastrar y soltar el formato tableview donde?!
    • si usted tiene un formato tableview en la pantalla, pero mostrando este comportamiento, entonces, sí, arrastrar y soltar desde el antes posición a una posición inferior en el árbol. Es un bug en iOS, y parece ser que no va a desaparecer…
    • Para su INFORMACIÓN sólo estoy viendo este tema en iOS9. Yo no lo veo en iOS10 o iOS11… 1. estoy haciendo todo esto a través de programación. ¿Todavía se aplican? 2. mi formato tableview es la única subvista en el viewController (en el que esta viewController se añade como un childViewController a otro viewController). ¿Todavía se aplican?
    • Por fin lo conseguí fijo. Para cualquier persona interesada consulte este respuesta a la manera

  10. 40

    De acuerdo a este guía de transición para iOS7 por Apple, el desplazamiento de la vista del contenido de los insertos, se ajusta automáticamente.
    El valor predeterminado de automaticallyAdjustsScrollViewInsets está establecida en SÍ.

    La UIViewController que tiene la UITableView debe establecer esta propiedad a NO.

    self.automaticallyAdjustsScrollViewInsets = NO;

    Esto va a hacer el truco.

    EDIT 1:

    También, uno podría tratar –

    self.navigationController.navigationBar.translucent = YES;

    Esto también elimina el acolchado adicional en la parte superior.

    • Muy buena respuesta, a menos que no se exactamente responder a la pregunta. Esilver habla sobre 35px brecha, pero iOS7 agrega 20px encabezado: igual a la de la barra de estado de la altura.
    • Ridículo problema. Gracias por la respuesta.
    • Esta es la respuesta a un problema diferente.
    • Gracias funcionó para mí, en mi caso particular tuve un tableviewcontroller incrustado en el viewcontroller, y mediante el establecimiento de automaticallyAdjustsScrollViewInsets = false en el viewcontroller la parte superior de la brecha desaparecido
  11. 38

    Mientras que el uso agrupan en formato tableview utilice esta opción para evitar borde de corte en viewWillAppear

    self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, 0, 0);
  12. 35

    Mucho de las anteriores respuestas anteriores son demasiado chapucero. Se iba a romper en cualquier momento en el futuro si Apple decide corregir este comportamiento inesperado.

    Raíz de la cuestión:

    1. un UITableView no le gusta tener un encabezado con una altura de 0.0. Si lo que estás tratando de hacer es tener un encabezado con una altura de 0, puede saltar a la solución.

    2. incluso si después de asignar un no 0.0 altura de la cabecera, un UITableView no le gusta ser asignado un encabezado con una altura de 0.0 a primera.

    Solución:

    Entonces, la forma más simple y fiable solución es asegurarse de que el encabezado de la altura no es 0 cuando se asigna a su vista de tabla.

    Algo como esto:

    //Replace UIView with whatever class you're using as your header below:
    UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.tableView.bounds.size.width, CGFLOAT_MIN)];
    self.tableView.tableHeaderView = tableViewHeaderView;

    Algo como esto llevaría a la cuestión en algún momento (normalmente, después de un desplazamiento):

    //Replace UIView with whatever class you're using as your header below:
    UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectZero];
    self.tableView.tableHeaderView = tableViewHeaderView;
    • Esta es la Solución Perfecta ! FUNCIONÓ !!!!!
    • Finalmente, encontré la respuesta que funciona. Gracias. Además, me enteré de que tableView.tableHeaderView en realidad es un accesorio de la vista por encima de la fila de contenido. Yo estaba confundido con los encabezados de sección todo el camino hasta que su respuesta salió.
    • CGFLOAT_MIN ha sido reemplazado con CGFloat.leastNormalMagnitude en Swift 3
  13. 29

    Guión:

    Desmarque: Adjust Scroll View Insets en Vista del Controlador de opciones

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    Código:

    self.automaticallyAdjustsScrollViewInsets = false
    • Que no funcionó para mí
    • con xcode 7 no veo Atributo inspector > Diseño, donde debo agregar auto.automaticallyAdjustsScrollViewInsets = false
    • en vista hizo de carga.
  14. 21

    Esta es la solución para iOS 10 uso de Swift 3:

    Usted puede deshacerse de la parte superior e inferior rellenos mediante la aplicación de los siguientes métodos de la UITableViewDelegate.

    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
    { 
        return CGFloat.leastNormalMagnitude
    }
    
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
    {
       return CGFloat.leastNormalMagnitude
    }
    • Segunda página ASÍ que me ayudó…. No sé por qué, tal vez por el AutomaticDimension, tal vez a causa de las Limitaciones con la LMV, de todos modos, gracias! ozi bua ist brav! 😀
    • Este trabajó para mí, con un agrupados uitableview.
    • Estos son los sección encabezados y pies de página. La pregunta se refiere a la totalidad de encabezado de la tabla. También, no hay nada específico para Swift3 o iOS 10 en cualquier método de delegado (que han existido desde siempre).
    • Este trabajo para mí en swift4
  15. 14

    En mi caso esto fue lo que me ayudó. Estoy apoyando a ios6 también.

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars = NO;
        self.automaticallyAdjustsScrollViewInsets = NO;
    }
    • No está seguro de lo que esto hace, pero funcionó a la perfección. Podría darnos alguna explicación?
    • Yo estaba perdido, y encontré esta solución, no sabe bien por qué está sucediendo esto. Mi conjetura es que el controlador es decidir que formato tableview necesidades de un recuadro, porque de la barra de estado(o, en otros casos, la barra de herramientas/tabbar), por eso se agrega automáticamente. Realmente estoy luchando con algunos de los nuevos iOS7 «características». Tal vez algunos uno lo entiende, y tiene una explicación real sobre esto?
    • Pasó los últimos 2 días de portar una relativamente pequeña aplicación para iOS 7 y sigue teniendo problemas menores.. me fije en ios 7 se rompe en 6 y viceversa.. me condujo loco!
    • Este es un problema diferente OP. Incluso con esto, para agrupar la vista de la tabla, un espacio adicional se añadió en la parte superior.
    • esta parece ser la clave de la línea: auto.automaticallyAdjustsScrollViewInsets = NO; sólo la configuración que elimina el espacio extra que tenía.
    • Agrupados tableviews tiene algo más de espacio por defecto, tal vez ese es el nuevo apple soluciones de diseño? Todavía estoy buscando algo real explicaciones.
    • Mike M es derecho. Sólo necesitamos establecer self.automaticallyAdjustsScrollViewInsets a NO. Y en mi caso, yo la pongo a la derecha en la que contiene el controlador. La problemática UIScrollView instancia es un UITableView a la derecha dentro de su niño controlador.

  16. 14

    Simplemente añada lo siguiente a su viewDidLoad en su VC:

    self.automaticallyAdjustsScrollViewInsets = NO;
    • Esta solución ha funcionado y lo prefiero a la configuración manual de los márgenes a través de la magia de los números. Gracias!
  17. 14

    Así que estaba tratando de cada método aquí, y esta vez ninguno de ellos ayudó. En mi caso fue un agrupados vista de tabla en iOS 9. Yo no sé realmente por qué y cómo me enteré de esto, pero para mí, la configuración de la tableViewHeader con un UIView con al menos 0.01 altura trabajado. CGRectZero no ayuda, nada realmente ayudó a:

    tableView.tableHeaderView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 0.0, height: 0.01))
    • increible. sólo funciona esto. gracias
    • No tengo idea de por qué, pero esto funciona D:
  18. 10

    Swift: iOS tuve formato tableview en desplácese a la vista .. cuando yo estaba haga clic en «Atrás» en la misma pantalla. Desplácese a la vista ocupan más espacio en la parte superior.. para solucionar esto he utilizado :

     self.automaticallyAdjustsScrollViewInsets = false

    Un valor Booleano que indica si el controlador de vista debería ajustar automáticamente su desplazamiento de la vista de inserciones.
    El valor predeterminado es true, lo que permite que el controlador de vista para ajustar su desplazamiento de la vista de inserciones en respuesta a los ámbitos de la pantalla consumido por la barra de estado, barra de navegación y la barra de herramientas o barra de pestañas. Se establece a false, si desea administrar el desplazamiento ver recuadro ajustes por sí mismo, como cuando hay más de un desplazamiento de la vista en la vista de jerarquía.

  19. 10

    Gracias a la respuesta de @Aurelien Porte. Aquí está mi solución

    Causa de este problema:-

    1. un UITableView no le gusta tener un encabezado con una altura de 0.0. Si lo que estás tratando de hacer es tener un encabezado con una altura de 0, puede saltar a la solución.
    2. incluso si después de asignar un no 0.0 altura de la cabecera, un UITableView no le gusta ser asignado un encabezado con una altura de 0.0 a primera.

    En ViewDidLoad:-

    self.edgesForExtendedLayout = UIRectEdge.None
    
    self.automaticallyAdjustsScrollViewInsets = false

    No Hay Necesidad De Algo Como Esto :-

    self.myTableview.contentInset = UIEdgeInsetsMake(-56, 0, 0, 0)

    En heightForHeaderInSection delegado:-

    if section == 0
        {
            return 1
        }
        else
        {
            return 40; //your other headers height value
        }

    En viewForHeaderInSection delegado :-

    if section == 0 
    {  
       //Note CGFloat.min for swift
       //For Objective-c CGFLOAT_MIN 
       let headerView = UIView.init(frame: CGRectMake(0.0, 0.0, self.myShaadiTableview.bounds.size.width, CGFloat.min)) 
       return headerView
    }
    else
    { 
       //Construct your other headers here 
    }
  20. 9

    Mi respuesta va a ser más una respuesta general, pero puede ser aplicado en esto también.

    Si el raíz de vista (de la ViewController) o el primer hijo (subvista) de la raíz de vista es subclase de la UIScrollView (o UIScrollView sí mismo), y si

    self.navigationController.navigationBar.translucent = YES;

    marco se establece automáticamente pre-calculado contentInset.


    Para evitar esto se puede hacer

    self.automaticallyAdjustsScrollViewInsets = NO;

    pero en mi caso yo no era capaz de hacer esto, porque yo era la aplicación de SDK que ha UIView componente que pueda ser utilizado por otros desarrolladores. Que UIView componente contiene UIWebView (que ha UIScrollView como la primera subvista). Si el componente se agrega como el primer niño en el UIViewController la vista de jerarquía, automático de márgenes serán aplicadas por el sistema.

    He arreglado esto mediante la adición de maniquí ver con el marco (0,0,0,0) antes de añadir UIWebView.

    En este caso el sistema no encuentra subclase de la UIScrollView como la primera vista y no se aplican los márgenes de

    • livesaver! gracias self.automaticallyAdjustsScrollViewInsets = false
  21. 8

    Estoy asumiendo que es sólo una parte de la nueva UITableViewStyleGrouped estilo. Es en el grupo de vistas de tabla y no parece ser de manera directa para el control de ese espacio.

    Si ese espacio está siendo representado por un UIView, sería posible buscar a través de todos los subviews de la UITableView para encontrar que determinadas ver y editar directamente. Sin embargo, también existe la posibilidad de que el espacio es sólo un codificado de desplazamiento antes de los encabezados y las células de inicio y no hay manera de modificarlo.

    Para buscar a través de todas las subvistas (me gustaría ejecutar este código cuando la tabla no tiene células, para hacerlo un poco más fácil la lectura de la salida):

    - (void)listSubviewsOfView:(UIView *)view {
    
        //Get the subviews of the view
        NSArray *subviews = [view subviews];
    
        //Return if there are no subviews
        if ([subviews count] == 0) return;
    
        for (UIView *subview in subviews) {
    
            NSLog(@"%@", subview);
    
            //List the subviews of subview
            [self listSubviewsOfView:subview];
        }
    }
    • Si UITableViews (para ser más específico UITableViewCellScrollView) en iOS7 nos han enseñado algo, es para salir de la vista de jerarquía de clases.
    • Buen punto. La otra opción es… para mantener la piratería para cada uno de iOS 😉
    • Huy, sí. Destinado a escribir la advertencia, pero se me olvidó.
    • Kevin – creo que tienes razón, esto es así por diseño. Parece que devolver 0 para heightForHeaderInSection es la manera más fácil de quitar este relleno. Por alguna razón, en ese caso particular no estaba funcionando para mí, pero no funciona en otros UITableViews.
    • Es, definitivamente, «por diseño». Si ha detenido la ejecución y corrió: po [((UIApplication *)UIApplication.sharedApplication).keyWindow recursiveDescription] verás que el encabezado de la tabla o de la primera sección de encabezado, o la primera celda (dependiendo de lo que use), naturalmente, deja un 35px frontera…. boo.
  22. 8

    Esta es la forma en que se puede fijar fácilmente en iOS 11 y Xcode 9.1 a través de Storyboard:

    Seleccione la Vista de la Tabla > Tamaño de Inspector > Contenido Márgenes: Nunca

    • Trabajó para mí 🙂
    • Genial!!! Gracias 🙂
    • Esto es, en lugar de automaticallyAdjustsScrollViewInsets en ios 11
  23. 7

    Yo tenía el mismo fix como arielyz. Una vez que me mudé a la UITableView para no ser la primera subvista de la vista principal, se me pasó. Mi espacio fue de 20 px, no 35.

    Yo no era capaz de recrear en un retrato xib, sólo un paisaje xib. Voy a presentar un radar error más tarde si puedo reproducir en una simple demo de la aplicación.

    • Corrió en el mismo problema, no era capaz de resolverlo cambiando el contentInset pero este método ha funcionado, aunque es bastante chapucero. Para lo que vale, mediante la depuración visual de la herramienta, yo era capaz de ver que mientras el UITableView tenía la altura adecuada, la UITableViewWrapper dentro de él no lo hizo.
    • Perfecto. Esta corregido el error para mí, en XCode 6.1. Ninguna de las otras sugerencias en este StackOverflow página de diferencia. Yo tenía un UITableView dentro de un UIView, y FUE la primera subvista. Arrastrando a convertirse en el 2º subvista fija perfectamente. (Si alguien me necesita, voy a estar en el pub.)
    • Gracias! Esto también funciona si usted tiene una vista de tabla de controlador dentro de un contenedor. Moviendo el recipiente para que este no es el primero en el padre de la vista quita la brecha en la parte superior de la vista de tabla.
  24. 7

    Creo que hacer UIEdgeInsets -35 0 0 0 es tedioso. En mi caso, he implementado en formato tableview: heightForHeaderInSection: método y tiene un potencial de retorno de 0.

    Cuando he cambiado de 0 a 0,1 f, el problema se fue.

    • Si pudiera, me gustaría upvote esto más de una vez. Debe ser un extraño autodiseño glitch o algo… Como nada > 0 obras, yo sugiero que en vez de 0,1 uso FLT_EPSILON o la constante dbl_epsilon, viendo como ambos representan el smalles valor positivo tal que 1.0 + epsilon != 1.0
    • Este trabajo para mí, gracias
  25. 6

    a utilizar esta creo que esta ayuda…

     - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
     {
        return 0.005f;//set this according to that you want...
     }
    • Genial! Funciona como un encanto en iOS 9.2. Esta respuesta es perfecto ya que en algunos casos tengo que suprimir el primer encabezado, mientras que en otros se muestran. Vi otra respuesta usando CGFloat.min, que también funciona. Así que mi viewController puede ahora proporcionar un número real como 44.0 o esencialmente 0.
  26. 6
    override func viewWillAppear(animated: Bool) {
            self.edgesForExtendedLayout = UIRectEdge.None
    
     // OR
    
    self.sampleTableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0);
    
       //OR
    
     self.automaticallyAdjustsScrollViewInsets = false
            }
    • automaticallyAdjustsScrollViewInsets = false trabajo de mí! Thx!
  27. 6

    Lo único que trabajó para mí fue:

    Swift:

    tableView.sectionHeaderHeight = 0
    tableView.sectionFooterHeight = 0

    Objective-C:

    self.tableView.sectionHeaderHeight = 0;
    self.tableView.sectionFooterHeight = 0;

    También, yo todavía tenía un espacio extra para la primera sección. Que era porque yo estaba usando el tableHeaderView propiedad incorrectamente. Fijo que así añadiendo:

    self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 0.01))
    • Buen trabajo, esto funciona en un agrupados tabla
    • A mí me funciona para Swift 4.2. Gracias
  28. 6

    Tenemos múltiples respuestas para esto.

    1) Usted puede agregar UIImageview en vista de didload

    UIImageView * imbBackground = [UIImageView new];
    [self.view addSubview:imbBackground];

    2) Se puede establecer el encabezado y pie de página de la altura de 0.1

    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
        return 0.1;
    }
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
        return 0.1;
    }

    3) Usted puede agregar encabezado y pie de página ver con la altura 0.1

    tblCampaigns.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)];
    tblCampaigns.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)];
  29. 6

    Swift 4 código:
    Para el formato tableview sin los encabezados de sección usted puede añadir este código:

    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }

    y obtendrá el encabezado de una separación de 0.

    Si quieres un encabezado de su altura determinada, pasar ese valor:

    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return header_height
    }

    y la vista desde viewForHeaderinSection delegado.

    • Esto no contesta la pregunta. La pregunta era acerca de que el espaciado adicional proviene, no de cómo deshacerse de él.
    • cosa extraña es que si u return 0 en heightForHeaderInsection u sigue apareciendo este espacio extra. Funciona perfecto con CGFloat.leastNormalMagnitude ( menos número positivo)
  30. 6

    Para ser más específicos, para quitar tableviewHeader espacio de la parte superior me hizo estos cambios:

    YouStoryboard.guión > YouViewController > Seleccione formato tableview > Tamaño de inspector > Contenido márgenes de Conjunto que nunca.

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    • ¿Cuál es la información adicional aparte de la captura de pantalla en comparación a esta respuesta?
    • es la misma supongo, yo no encuentro esa respuesta cuando yo estaba buscando una solución. Debo eliminar mi respuesta..?
    • No se si se puede expandir un poco en su respuesta describiendo por qué el Contenido de los márgenes de = en realidad Nunca resuelve este problema (¿cómo funciona esta opción de trabajo?).
    • Cuando el contenido de los insertos, se establece como nunca, el formato tableview no desplazarse hacia arriba en el textField de edición.
  31. 4

    He estado golpeando mi cabeza contra este así. Bastante seguro de que este es un iOS7 error.
    Lo que me ayudó a finalmente, es el orden de las vistas en el xib. Tuve una visión en la que la vista de la tabla se muestran correctamente, y otra en la que la vista de tabla tenido que extra 35px espacio. La única diferencia entre entonces (UITableView sabio), es que en los malos-visualización de la vista de UITableView fue el primer niño, mientras que en la vista que se visualiza correctamente, fue el segundo.

    Que hizo el truco para mí, simplemente cambiando el orden de las vistas. Yo realmente prefiero no añadir más líneas de código para una solución…

    • Después de probar todas las soluciones aquí, lo único que trabajó en mi caso era para cambiar el orden de la subvista de colocación, como usted sugiere.
  32. 4

    Acabo de eliminado UITableView de Interface Builder, creado una vez más y extraño 35px desaparecido.

    Parece que hay un extraño bug en Interface Builder.

    • Extraño, esto funcionó para mí también. Xcode 6.4
  33. 4

    Solo pin de su formato tableview (o comenzar) en la parte superior absoluta de la vista. Los adicionales no deseados espacio está exactamente a la altura de una barra de navegación.

    • Esta es la única respuesta correcta en esta horrible hilo.
    • Sí, me pregunto cómo lo que muchas personas aceptan una respuesta sin pruebas de todas las consecuencias de los ajustes de… imagen
  34. 3

    Hacer a continuación (Swift) resuelve el problema, pero esto funciona cuando usted no necesita un encabezado.

    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return CGFloat.min
    }

    Si usted lo hace, usted tendrá que abandonar la primera sección y el uso de otras de contenido.

    UITableViewDataSource aplicación:

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return <number_of_data_sections>+1
    }
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //the first section we don't use for data
        if section == 0 {
            return 0
        }
    
        //starting from 1, there are sections we use
        if section == 1 { 
            let dataSection = section - 1
    
            //use dataSection for your content (useful, when data provided by fetched result controller). For example:
           if let sectionInfo = myFRC!.sections![dataSection] as? NSFetchedResultsSectionInfo {
                return sectionInfo.numberOfObjects
            }
        }
    
        return 0
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let dataIndexPath = NSIndexPath(forRow: indexPath.row, inSection: (indexPath.section - 1) )
        //return cell using transformed dataIndexPath
    }
    
    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if section == 1 {
            //return your header height
        }
        return CGFloat.min
    }
    
    
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        if section == 1 {
            //return your header view
        }
        return nil
    }
    
    func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        //in my case, even when 1st section header was of zero heigh, I saw the space, an that was a footer. I did not need footer at all, so always gave zero height
        return CGFloat.min
    }

    Y eso es todo. Modelo de no saber nada sobre el cambio, porque nos transforma el número de la sección sobre el acceso a los datos.

  35. 3

    si usted elige el estilo de UITableViewStyleGrouped,usted necesita para implementar el Header y Footer altura delegado método,y el valor de retorno de necesidad mayor que 0; como esta:

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
        return CGFLOAT_MIN;
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
        return CGFLOAT_MIN;
    }
  36. 3
    tableView.contentInsetAdjustmentBehavior = .never

    fue la solución para mí (iOS12 /xcode 10) en un plano en formato tableview con encabezados

    • Esto me ayudó. Gracias.
  37. 3

    Este código funcionó para mí, La mejor respuesta para mí que fue escrito en objective-C en la parte de arriba así que me la ha convertido en Swift.

    Para Swift 4.0+

    self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: 0.01))

    Acabo de escribir esto en viewDidLoad() y funcionará como un campeón.

  38. 2

    Con storyboard:

    Asegúrese de que su UITableView parte superior de la restricción de no decir «Bajo la superior de la guía de diseño». En su lugar debe decir «el espacio para: Superview» (Superview.La parte superior).

    Además de, por supuesto, en el UIViewController que contiene el UITableView, desactive la opción «Ajuste de Desplazamiento de la Vista de Inserciones».

    • Este uno de los fijos en mi caso. Ninguna de las anteriores obras. Gracias!
    • Que uno trabaja! Gracias!
  39. 2

    Tengo un VC con un Recipiente en la misma (que por cierto es parte de un Nav controlador), y embebidos en que es un TableVC.

    La selección de mi TableVC, buscando en el panel de atributos:

    • desactive automáticamente el ajuste de desplazamiento de márgenes
    • desmarque extender los bordes en la parte superior de la barra de

    Luego me puse el autoconstraint para el Contenedor con relación a la matriz de vista como:

    Contenedor De Vista.top = ParentView.Margen Superior

    Esto realiza lo siguiente para mí:

    • mantiene la tabla se detuvo en la parte superior, pero justo debajo de mi barra de navegación
    • después de la actualización, la tabla devuelve a esta posición, y no se hasta+en la barra de navegación como se estaba haciendo
    • después del desplazamiento de la mesa de fondos a cabo en el fondo, no a corto

    Un montón de prueba y error para mí, con esta configuración, pero finalmente he encontrado estos pequeños detalles publicado por lekksi @ Eliminar el espacio vacío antes de que las células en UITableView

  40. 2

    Cuando usted necesita para ocultar su tableHeaderView, usted debe utilizar este Swift 3 código:

    tableView.tableHeaderView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0.0, height: CGFloat.leastNormalMagnitude)))
  41. 2

    self.automaticallyAdjustsScrollViewInsets = NO;

    Este fue desaprobado en iOS 11, por lo que debe usar nueva propiedad
    contentInsetAdjustmentBehavior en el código, se debe solucionar el problema.

    if #available(iOS 11.0, *) {
        collectionView.contentInsetAdjustmentBehavior = .never
    }

    Hay una nueva propiedad en UIScrollView llamado contentInsetAdjustmentBehavior añadido en iOS 11 para determinar ajustar el contenido de offset

    • Esto funcionó para mí – problema fue sólo en un iPhone 5C y esta solución funcionó como un encanto! 🙂
    • A mí me funcionó, mientras que la adición en viewWillAppear en lugar de viweDidLoad
  42. 1

    Me di cuenta de que hay muchas respuestas a esta pregunta en función de lo que estamos tratando de hacer, así que me gustaría compartir la mía en caso de que alguien que está pasando por algo que el mismo efecto:

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    En mi punto de vista controlador, tengo un agrupados UITableView cuya tableHeaderView se compone de un 200 puntos altos UIScrollView, y una sola atribuido UILabel que contiene el título del anuncio, el precio, la ubicación y el tiempo publicado. Debajo de él está el contenido de la vista de tabla.

    Con las dimensiones por defecto de un agrupan la vista de la tabla de cabecera, el «MÁS INFORMACIÓN» de cabecera es también muy por debajo de los «5 días» de la etiqueta. Me fijo (ya la imagen de arriba) reemplazando las alturas para el encabezado y pie de página de cada sección.

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        return section == kMoreInfoSection ? 33 : UITableViewAutomaticDimension;
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
        return UITableViewAutomaticDimension;
    }

    He aprendido acerca de cómo reemplazar las alturas de @erurainon comentario en respuesta, y UITableViewAutomaticDimension de https://stackoverflow.com/a/14404104/855680. No tuve que configurar self.automaticallyAdjustsScrollViewInsets a NO en mi punto de vista controlador a diferencia de lo que la aceptan respuesta sugiere.

    También me ha tratado de establecer la UIEdgeInsets y dar la vista de tabla un valor negativo para la parte superior, pero no funcionó, toda la vista de la tabla se mueve hacia arriba, incluyendo la tableHeaderView.

  43. 1

    No estoy seguro de si esta buena respuesta pero no funciona conmigo

    Yo seleccione la Vista de la Tabla , vaya a la regla , de cambio Y un valor de cero

    ¿Por qué hay acolchado extra en la parte superior de mi UITableView con estilo UITableViewStyleGrouped en iOS7

    • Que es como debe verse como:
    • Sí, no sé por qué el mío fue cambiado por Xcode pero esto me ayudó, era tan básico que ni siquiera creo que para comprobarlo 🙂
  44. 1

    Asegúrese de que usted ha dado a las restricciones a la mesa. Yo no había y que enfrentan el mismo tema de tener un inexplicable relleno en la parte inferior de la tabla.

  45. 1

    En mi caso no fue deseado de células llamado «HeaderView» en el prototipo de visualización en el Guión, cuando la borre todo era bueno.

  46. 1

    Me fui a través de todas las respuestas. Ninguno funcionó para mí. Todo lo que tenía que hacer era:

    self.myTableView.rowHeight = UITableViewAutomaticDimension
    self.myTableView.estimatedRowHeight = 44.0

    Además, el problema no estaba sucediendo en la parte superior de formato tableview. Lo que estaba sucediendo en la parte superior de cada sección del formato tableview.

    Por lo que vale este problema sólo estaba pasando por iOS9. Nuestra aplicación trabajado bien para iOS10 y iOS 11.

    Yo recomiendo ver este impresionante pregunta y sus respuestas:

    Mediante Auto de Diseño en UITableView para la dinámica de la célula diseños & variable altura de las filas

    • Similar a esta respuesta, el espacio extra que estaba viendo sólo en la parte superior del formato tableview (no en la parte superior de cada sección) parecen ser causada por la no devolución de un > 0 valor en el método delegado func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath). Esto fue a pesar de que yo ya había indicado que no iba a usar un estimado de altura para que la ruta del índice en func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) volviendo una constante. Parece como si usted no puede selectivamente mezcla altura constantes y UITableViewAutomaticDimension.
    • Nota: esto ocurrió en iOS 10 & 11 para mí.
  47. 1

    Swift3

      If you are using grouped table then do following things .
      This will remove top space.
        var frame = CGRect.zero
        frame.size.height = .leastNormalMagnitude
        self.tableView.tableHeaderView = UIView(frame: frame)
        self.tableView.tableFooterView = UIView(frame: frame)
    If you Still getting this issue then it will remove by default content offset from top.
     [Set content insets never]          

    https://i.stack.imgur.com/fjxOV.png

  48. 1

    Para mí, he probado todas las soluciones pero yo estaba pensando para ajustar la altura para UITableView sección y se está trabajando para mí.(El uso de swift)

     func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
            return 0.001
        }
  49. 0

    en iOS 7 se empieza a ver una la de la pantalla en lugar de debajo de la barra de navegación. su vry simple para establecer que para la parte inferior de la ur navbar. Compruebe ESTE respuesta para la solución, no es la misma pregunta pero muy relacionados con el tuyo.

  50. 0

    Sin embargo, otra manera de hacerlo… pero me gusta porque evita escribir cualquier valor de la altura de.

    En un UITableViewStyleGrouped tabla (estático o dinámico), asigna a la altura deseada en tableView(_:heightForHeaderInSection). Estoy calculando la nueva altura de la base en el margen inferior de la sección de encabezado de etiqueta.

    override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    
        var height = UITableViewAutomaticDimension
    
        if section == 0, let header = tableView.headerViewForSection(section) {
            if let label = header.textLabel {
                //get padding below label
                let bottomPadding = header.frame.height - label.frame.origin.y - label.frame.height
                //use it as top padding
                height = label.frame.height + (2 * bottomPadding)
            }
        }
    
        return height
    }

    Probado en iOS 9, Xcode 7.3.

    Espero que ayude.

  51. 0

    Ninguna de las respuestas anteriores trabajó para mí. ¿Qué terminan trabajando para mi situación (que estaba viendo que el relleno después de agregar dinámicamente una cabecera para mi Table View) fue la selección de la Navigation Bar de la Document Outline y comprobación de la Translucent cuadro (a diferencia de algunas de las respuestas que estaban diciendo a la fuerza para ser translúcido). Anteriormente había desmarcado porque había hecho mi rojo mirar un poco de naranja, pero yo no podía probar la solución de la reordenación de los elementos en la escena desde el Table View era el único elemento en esta escena. Esta solución funciona mientras usted está de acuerdo con la Navigation Bar‘s de color tener una capa translúcida sobre él. Espero que esta ayuda 🙂

  52. 0

    Uso de swift 4.1. Intente esto:

    func tableView(_ tableView: UITableView, viewForHeaderInSection 
    section: Int) -> UIView? {
        return nil 
    }
    • no funciona, esta brecha es aún visible
  53. 0

    Finalmente imaginé cómo solucionar este problema después de intentar todo!

    Me di cuenta de que por alguna razón el contentOffset de mi en formato tableview había una ‘y’ de -20 así que cuando la configuración de mi en formato tableview:
    swift 3/4

    tableView.contentOffset = .zero

    Objective-C

    self.tableView.contentOffset = CGPointMake(0, 44);
  54. 0
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 0.0
    }

    Esto funcionó para mí. También se puede uno dar de altura para el encabezado de base de la sección.

  55. 0

    si self.automaticallyAdjustsScrollViewInsets = NO; no funciona para usted, asegúrese de que la altura de cualquiera en formato tableview encabezado o cabecera de sección es CGFLOAT_MIN no 0.

    Por ejemplo, si usted desea hacer en formato tableview encabezado de 0 de alta, usted puede hacer:

        CGRect frame = self.tableViewHeader.frame;
        frame.size.height = CGFLOAT_MIN; //not 0
        self.tableView.tableHeaderView.frame = frame;
        self.tableView.tableHeaderView = self.tableViewHeader;

    Espero que ayude.

  56. 0

    Swift 4 respuesta…

    Si la vista de la tabla está seleccionada en el interface builder y en los atributos del inspector del estilo «Agrupados» está seleccionada, introduzca el código siguiente en el controlador de vista para solucionar el extra de espacio de la cabecera problema.

    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return CGFloat.leastNonzeroMagnitude
    }
  57. 0

    Ninguna de las respuestas o soluciones a mí me ayudó. La mayoría estaban tratando con el formato tableview sí mismo. Lo que estaba causando el problema, para mí fue el punto de vista que agregar el formato tableview o collectionView en. Esto es lo que fija para mí:

    SWIFT 5

    edgesForExtendedLayout = []

    Puse eso en mi viewDidLoad y el molesto brecha se fue. Espero que esto ayude.

  58. -3

    Tirar mis diez centavos – yo tenía el mismo problema después de que me quitaron una celda de encabezado de un formato tableview. Para resolver he cambiado el formato tableview Estilo en los Atributos del Inspector de «Agrupar» a «Normal» y el espacio ya estaba eliminado.

Dejar respuesta

Please enter your comment!
Please enter your name here