En iOS 7, Apple ha cambiado UIToolbar para mostrar una 1px rayita en su parte superior. Este es molesto visualmente en algunos casos, y no parece ser ninguna API pública para quitarlo.

Configuración de un shadowImage no funciona.

Estoy buscando una manera de eliminar la línea del cabello en un relativamente limpio, y mantener el ordinario desenfoque del fondo.

  • ¿qué acerca de iOS8 ??
InformationsquelleAutor fzwo | 2013-10-01

10 Comentarios

  1. 83

    Si establece youBar.clipsToBounds = SÍ, la línea del cabello desaparecer.

    Espero que esta ayuda.

    [EDITAR]

    Para el navigationBar parte inferior del cabello, la solución aquí https://stackoverflow.com/a/18180330/2011578 también funciona muy bien.

    • Ah, buena idea. También me di cuenta de que la sombra de la imagen está por debajo de la nav bar
    • gran solución. gracias
    • sólo su solución funcionó para mí!
    • Este debería ser seleccionada como la respuesta correcta. Esto funcionó para mí.
    • Inteligente respuesta, +1 de mí !!!
    • 😍 Combinar con .barStyle = -1 permite una completamente invisible de la barra de herramientas (IAS HIG incierto, sin embargo)
    • Protector de la vida, de hecho.

  2. 5

    De la línea del cabello de la frontera es un UIImageView subvista de la barra de herramientas, usted puede ocultar como este:

            for (UIView *subView in [self.toolbar subviews]) {
                if ([subView isKindOfClass:[UIImageView class]]) {
                    //Hide the hairline border
                    subView.hidden = YES;
                }
            }
    
    • Siempre es una mala idea hacer suposiciones acerca de la implementación interna detalles como este. Apple podría cambiar la aplicación en cualquier momento.
  3. 5

    La línea es shadowImage.
    Simplemente pueden ser eliminados mediante la aplicación de un vacío UIImage.
    De acuerdo a la documentación que usted también tiene que establecer una imagen de fondo personalizada:

    - (void)viewDidLoad {
      [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
      self.navigationController.navigationBar.shadowImage = [[UIImage alloc ]init];
    }
    

    Ser conscientes: de la Translucencia no funcionará si usted establecer sus propias imágenes en caso de que usted necesita eso.

    • Creo que debo aclarar mi pregunta entonces. Necesito quitar la línea del cabello, pero mantener el desenfoque (así que no hay ajuste de la imagen de fondo).
    • Este se utiliza para trabajar en iOS 6, pero en iOS 7, la configuración de la imagen de la sombra a una imagen transparente no funciona — no es una muy tenue, brillante marca donde la sombra se dibuja.
  4. 4

    Cuando el uso de Storyboards,

    self.clipsToBounds = true
    

    puede ser la configuración de la Barra de herramientas en el tiempo de ejecución de los atributos. Esto ocultará la línea del cabello.
    Verificado en iOS 7 y 8.

  5. 2

    Puede ser resuelto fácilmente en el guión gráfico:

    Seleccione la Vista que se agrega como UIBarButtonItem Contenedor & conjunto de sus «Clip de Subvistas» & Ejecutar la aplicación.

    Quitar UIToolbar rayita en iOS 7

  6. 1

    esta solución funcionó para mí… esta probado para iOS 7

    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    
  7. 1

    No es exactamente lo que usted desea, pero seguramente esta respuesta va a ayudar a alguien.

    Si quieres cambiar el fondo de la frontera(sombra) color de UINavigationBar o UIToolbar en lugar de ocultar, debe establecer la imagen de fondo y la imagen de la sombra de su bar.

    Para el cambio de la UINavigationBar la parte inferior de la frontera(sombra)

    [auto.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@»yourImageName»] forBarMetrics:UIBarMetricsDefault];
    [auto.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@»yourImageName»]];

    Para el cambio de la UIToolbar la parte inferior de la frontera(sombra)

    [yourToolBar setBackgroundImage:[UIImage imageNamed:@»yourImageName»]
    forToolbarPosition:UIBarPositionBottom
    barMetrics:UIBarMetricsDefault];

    [yourToolBar setShadowImage:[UIImage imageNamed:@»yourImageName»]
    forToolbarPosition:UIBarPositionBottom];

  8. 1

    Mientras que algo chapucero, subclases UITabBar y la invalidación de la - (void)addSubview: método, se puede evitar la rayita separador de ser añadido a la vista de jerarquía en total:

    - (void)addSubview:(UIView *)view {
        if ([view isKindOfClass:[UIImageView class]] && view.bounds.size.height < 2.0f) {
            return;
        }
        [super addSubview:view]; 
    }
    

    De esta manera vamos a conseguir tanto la borrosa de la barra de pestañas y quitar la línea del cabello separador. También se asegura de que UITabBar no recortar vistas a los límites, lo cual es importante para efectos como el gran centro de botones u otros componentes de interfaz de usuario.

  9. 0

    Yo no podía llegar este trabajo a través de Storyboard en mi caso. Finalmente he utilizado la aparición de proxy para eliminar la sombra en todos mis barras de herramientas:

    [[UIToolbar appearance] setClipsToBounds:YES];

  10. 0

    Si usted necesita ocultar la línea del cabello y mostrar sombra clipsTobounds no ayudan

    uso:

    TOOLBAR.subviews
          .filter { $0 is UIImageView }
          .forEach { $0.hidden = true }
    

    o:

    for case let imageView is UIImageView in TOOLBAR.subviews {
        imageView.hidden = true 
    }
    

Dejar respuesta

Please enter your comment!
Please enter your name here