Estoy tratando de portar mi app para iOS7, pero mi costumbre TableViewController está mostrando la última fila (la célula) en virtud de la TabBar 🙁

Im buscando mucho por ello, pero yo no encontrar ninguna solución. Alguien me puede ayudar?

Mi Costumbre de la Vista de Tabla de la clase

El error se muestra en el golpe captura de pantalla (sólo se muestra una parte del último producto porque estoy arrastrar hacia arriba para mostrar el oculto producto bajo la tabbar):

iOS 7 Personalizados en formato tableview Es Bajo TabBar

Gracias.

16 Comentarios

  1. 30

    He encontrado la respuesta a su pregunta en otro post, respondió por dariaa, aquí:

    Ficha de la Barra cubre formato tableview células en iOS7

    Funcionó muy bien para mí.

    Por favor, no hay crédito para mí, porque yo no soy el original hombre que resolvió.

    Personalizado TableViewController, añadir estas dos líneas en [super viewDidLoad]:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        self.edgesForExtendedLayout = UIRectEdgeAll;
        self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0); 
    } 
    • Gracias, esta solucionado el problema con mi barra de pestañas.
  2. 34

    Tengo el mismo problema y se soluciono el uso de guión gráfico.
    En la Ficha de la Barra de control, vaya a atributo inspector, Simulado Métricas, y fijar la parte Inferior de la Barra de la rejilla de la Barra de pestañas. Eso es todo!
    Ver imagen de abajo para una descripción.
    iOS 7 Personalizados en formato tableview Es Bajo TabBar

    Saudações! (Saludos!)

    • Opaco es sólo una solución : no lo uso, es feo.
    • u salvar mi día hombre (? ty
    • Después de que me han cambiado a Opaco de la Barra de pestañas, me cambio a Ninguno, a continuación, el trabajo sigue.
  3. 9

    Mis amigos, no puedo decirle lo mal que me costó a partir de este. No solo re-configuración de Placa de la Historia de nunca me han ayudado. La cuestión era exactamente igual que en el Post Original, he conseguido solucionarlo utilizando:

    para swift 3

    self.edgesForExtendedLayout = []

    para objective-c

    self.edgesForExtendedLayout = NO;
    • Increíble, pero esta era la respuesta para mi problema con un punto de vista bajo el tabbar.
  4. 8

    2 líneas en viewDidLoad y eso es todo !

    self.edgesForExtendedLayout = UIRectEdgeAll;
    self.tableview.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f);
    • UIRectEdgeAll está configurado por defecto
  5. 6

    En iOS 7 viewController usos de altura completa. Hay una propiedad introducida como

    self.automaticallyAdjustsScrollViewInsets = NO;

    establece en no. luego compruebe, o conjunto de UIEdgeInset si no se establece inmediatamente después de que.

    UIEdgeInsetsMake(top, left, bottom, right)

    Ver aquí
    https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

    Editar: tratar también este

    self.edgesForExtendedLayout = UIRectEdgeNone;
    • Lo puse (ya probado si ves el código comentado). Pero nada se resolvió 🙁
    • No funciona en mi final.
  6. 5

    La causa raíz de este problema es que automaticallyAdjustsScrollViewInsets es eficaz sólo en la Primera de desplazamiento de la vista en su VC de la vista de Jerarquía. No está documentado por parte de Apple, pero es la única manera de que el VC detectar el desplazamiento de la vista de la necesidad de ser modificado a menos que usted está usando un UITableViewController.

    Así que con el fin de solucionar el problema sin necesidad de ajustar manualmente los márgenes, hacer esto:

    1. Asegúrese de que el «Ajuste de Desplazamiento de la Vista de Inserciones» está marcada.
    2. Asegúrese de que el formato tableview es el primera subvista en la vista de Jerarquía.
      (Mover hacia arriba por encima de todos los demás elementos)
    • Wow esto hizo posible mantener la translúcido comportamiento de la tabbar y todavía hacer el scrollview elementos para desplazarse por encima de ella. Gracias!
  7. 2

    UIViewController tiene dos nuevas propiedades para ayudar a usted : topLayoutGuide y bottomLayoutGuide. Regresan a la altura de la vista principal del controlador de controles que debe evitar. En este caso, bottomLayoutGuide devolverá el desplazamiento de la barra de pestañas.

    Su vista personalizada controlador es probablemente primordial de un método y no invocar superaplicación donde esto puede ser hecho por usted. Supongo que usted está instalando Autodiseño de restricciones o establecer una vista del marco manualmente para llenar la vista. Usted sólo tiene que incluir el valor de [bottomLayoutGuide length] a su diseño de cálculo. Si el soporte de la rotación, debe actualizar el valor en willAnimateRotationToInterfaceOrientation:duration:.

  8. 1

    UINavigationController y UITabBarController ambos tienen una transparencia indicador que se puede establecer mediante programación o en el guión gráfico.

    La UINavigationController también tiene dos parámetros que controlan si el contenido se extiende debajo de la parte superior o inferior de la barra. De nuevo se puede establecer mediante programación o en el guión gráfico. Esto se aplicará a todas las subvistas.

    Cada UIViewController puede establecer sus propias preferencias en el código. La propiedad se llama edgesForExtendedLayout y usted puede configurar todas las combinaciones.

    El uso de las propiedades que le permiten Autodiseño y Manantiales n»Struts para ajustar los puntos de vista de la manera que desee, sin importar el dispositivo.

    Hay muchas más nuevas propiedades en UIViewController que usted querrá echar un vistazo a.

  9. 1

    Tratar el siguiente:

     if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    
     self.edgesForExtendedLayout = UIRectEdgeBottom;
  10. 1

    Tengo el mismo problema. Una solución es hacer que la Barra de herramientas no Translúcido. Aquí está cómo hacerlo:

    • Primero seleccione la barra de herramientas del visor de documentos
      como aquí
    • A continuación, desactive Translúcido como aquí

    Espero que esto ayude.

    Gracias.

  11. 0

    El problema se enmascaran mediante:

    -(void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
        self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 112, 0);
    }

    Pero no soluciona, porque en cada iPhone y en cada aplicación en formato tableview tengo un espacio diferente en la parte inferior.

    Así que esta es una mala solución.

    No sé una manera de resolverlo.

  12. 0

    He resuelto mi problema ahora, cambiando mi BaseTableViewController a heredar de UIViewController a UITableViewController.

    Pero el uso de un formato tableview dentro de un UIViewController no está resuelto 🙁

    Gracias.

  13. 0

    tal vez no es una respuesta correcta, también por eso he puesto esta respuesta, usted me puede decir si esta respuesta podría ser una posible solución.

    En mi caso, me gusta el efecto translúcido, así que he añadido un pie de página en la tabla y he modificado la scrollIndicators.

    - (void)viewDidLoad
    {
        //Do any additional setup after loading the view.
        [super viewDidLoad];
        UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.agendaItemsTable.frame.size.width, self.tabBarController.tabBar.frame.size.height)];
        self.agendaItemsTable.tableFooterView = footer;
        self.agendaItemsTable.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, self.tabBarController.tabBar.frame.size.height, 0);
    
    }

    ¿Qué te parece?

  14. 0

    Tuve el mismo problema, y la votación de las respuestas no resolverlo. Ver mi respuesta a una pregunta similar, Ficha de la Barra cubre formato tableview células en iOS7.

    He resuelto el problema de forma manual la configuración de la vista de la tabla del cuadro en la vista de tabla del controlador de viewWillAppear: método a la altura de la pantalla (barra de estado de la altura + de la barra de navegación de altura + ficha de la barra de altura).

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        //Adjust height of tableview (does not resize correctly in iOS 7)
        CGRect tableViewFrame = self.tableView.frame;
        tableViewFrame.size.height = [self heightForTableView];
        self.tableView.frame = tableViewFrame;
    }
    
    - (CGFloat)heightForTableView
    {
        return CGRectGetHeight([[UIScreen mainScreen] bounds]) -
               (CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) +
                CGRectGetHeight(self.navigationController.navigationBar.frame) +
                CGRectGetHeight(self.tabBarController.tabBar.frame));
    }

    Si alguien encuentra una mejor solución a este problema, por favor compartir!!!

    • Estás usando viewWillAppear incorrectamente para empezar aquí. Es un error común. Esto debería ir en viewWillLoad. viewWillAppear incendios cada vez que aparece la vista! Usted no quiere ver el código de instalación en el método de disparo cada vez que aparece la vista. Sólo código dinámico que los cambios deben ir en viewWillAppear, tales como los datos que se está actualizando sobre la marcha. Usted puede llamar a la lógica de una vista si es relevante para la actualización de los datos, tales como una actualización de la vista. Pero la vista de la instalación nunca debe ir en viewWillAppear.
    • cocoanut: En mi experiencia, los cuadros de algunos puntos de vista no siempre han sido establecidos en viewDidLoad, pero se establecen en viewWillAppear, para la computación de las geometrías en viewDidLoad resultados en valores incorrectos si tienen que estar basadas en puntos de vista en la punta.
    • De acuerdo. Pongo este código en viewWillAppear: porque no hay ninguna garantía de que los marcos será el fijado en el viewDidLoad.
    • href=»http://stackoverflow.com/a/6758424/1367622″>Esta respuesta explica por qué usted no debe poner este código en viewDidLoad.
  15. 0

    He tenido un problema similar con vista de colección. Cambio de la vista de colección de marco y contenido del recuadro de abajo fija para mí…

        guard let cv = collectionView,
            let tabBar = tabBarController?.tabBar else { return }
    
        //Resize collection view for tab bar
        let adjustedFrame = CGRect(origin: cv.frame.origin,
                                   size: CGSize(width: cv.frame.width, height: cv.frame.height - tabBar.frame.height))
        cv.frame = adjustedFrame
    
        //Adjust content inset for tab bar
        let adjustedContentInsets = UIEdgeInsetsMake(0, 0, tabBar.frame.height, 0)
        cv.contentInset = adjustedContentInsets
        cv.scrollIndicatorInsets = adjustedContentInsets

    Buena suerte!

Dejar respuesta

Please enter your comment!
Please enter your name here