Tengo una costumbre UIBarButtonItem con una imagen que funciona bien en iOS 6.1. Pero iOS 7 tiene un tintColor y superposiciones de este color por encima de mi imagen. Si me puse el tintColor a [UIColor clearColor] el botón no se muestran todos juntos.

¿Cómo puedo hacer que mi botón atrás se muestran en iOS 7 como lo hace en iOS 6? Por favor ayuda?

Imagen personalizada para UINavigation Botón Atrás en iOS 7

Imagen personalizada para UINavigation Botón Atrás en iOS 7

  • Usted no debe usar un botón de la barra de elemento como un botón atrás. En lugar de establecer el backIndicatorImage para la barra de navegación.
  • La aplicación tiene que tener el mismo aspecto en todas las versiones de iOS. backIndicatorImage es para iOS 7 solo. Yo ya uso un mask en iOS 6 const float colorMask[6] = {222, 255, 222, 255, 222, 255}; UIImage *image = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors([[UIImage alloc] init].CGImage, colorMask)]; [backButtonItem setBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
  • Yo estoy usando el ios5, U me puede ayudar
InformationsquelleAutor Majid | 2013-09-20

6 Comentarios

  1. 23

    Intenta establecer UIBarButtonItem como de esta manera en ios7:-

    UIImage *temp = [[UIImage imageNamed:@"theImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];    
    UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:temp style:UIBarButtonItemStyleBordered target:self action:@selector(action)];

    Aquí es un post original de apple centro de desarrollo de Foros de discusión

    Para apoyar tanto la versión iOS7 así como de la inferior, a continuación, comprobar system-version y establecer un código como:-

    UIImage *temp=nil;
    
    if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
    { 
        temp = [UIImage imageNamed:@"btn-back.png"]; 
    }
    else
    { 
        temp = [[UIImage imageNamed:@"btn-back.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
     }
    • Gracias, esto funciona. Sin embargo UIImageRenderingModeAlwaysOriginal no funciona en iOS 6, he tenido que hacer una comprobación de la versión de iOS. UIImage *backImage = nil; if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0){ backImage = [UIImage imageNamed:@"btn-back.png"]; }else{ backImage = [[UIImage imageNamed:@"btn-back.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]; }
    • gracias acabo de editar mi respuesta para apoyar tanto la Versión para ayudar a que otros se han pegado con el mismo problema.
    • también una cosa de menor importancia, se debe quitar la .png en sus imágenes. que manera de ios puede recoger retina y no retina las imágenes, o el específico de dispositivo de imágenes.
    • Creo respondsToSelector: sería más apropiado en este caso. UIImage *temp = [UIImage imageNamed:@»btn-back.png»]; if ([temp respondsToSelector:@selector(imageWithRenderingMode:)]) { temp = [temp imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; }
    • UIBarButtonItemStyleBordered está en desuso en iOS8.x. Uso UIBarButtonItemStylePlain.
  2. 42

    Debe utilizar aparición en UINavigationBar a nivel global para el conjunto de la costumbre botón atrás.

    [UINavigationBar appearance].backIndicatorImage = customBackButton;
    [UINavigationBar appearance].backIndicatorTransitionMaskImage = customBackButton;
    • Me gustaría añadir que customBackButton imagen debe usar imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal, como este [[UIImage imageNamed:@"imageName"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; por lo que puede mostrar el color de la imagen.
    • No válido para iOS 9: no backIndicatorImage
    • Tienes razón, fija y se olvidó de eso. Probablemente había error allí y autocompletado de código no funciona. Gracias por notar que!
    • Cómo quitar el título en todos los botón atrás cuando la apariencia?
    • Xcode/Swift no parecen saber acerca de estos, ya que no se muestran en la función autocompletar, que compila y se ejecuta aunque.
  3. 20

    El siguiente parece hacer un poco más de sentido para la gente que no quiere meterse con el existente acción de destino, etc. Sólo tienes que copiar y pegar. También esto obliga a iOS para utilizar su la imagen con todos los de su flairs, en lugar de simplemente utilizar una plantilla/impresión de la imagen.

    - (void)setCustomNavigationBackButton
    {
        UIImage *backBtn = [UIImage imageNamed:@"arrow"];
        backBtn = [backBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        self.navigationItem.backBarButtonItem.title[email protected]"";
        self.navigationController.navigationBar.backIndicatorImage = backBtn;
        self.navigationController.navigationBar.backIndicatorTransitionMaskImage = backBtn;
    }

    arrow es el nombre de la imagen.

  4. 7

    swift versión:

    var backBtn = UIImage(named: "return_menu")
    backBtn = backBtn?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
    
    self.navigationController!.navigationBar.backIndicatorImage = backBtn;
    self.navigationController!.navigationBar.backIndicatorTransitionMaskImage = backBtn;
    • No estaba funcionando hasta que he añadido «imageWithRenderingMode»…gracias!
  5. 6

    Tratar de esta manera:

    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
    self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"yourImageName.png"];
    self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"yourImageName.png"];

    Esto creará una imagen de la máscara en el mundial de tinte de color que le dará su propio icono personalizado. No funciona para las imágenes en color.

  6. 0

    //AGREGAR UNA IMAGEN PARA EL BOTÓN DE

    UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [refreshButton setFrame:CGRectMake(0,0,30,30)];
    refreshButton.userInteractionEnabled = YES;
    [refreshButton setImage:[UIImage imageNamed:@"yourimage.jpg"] forState:UIControlStateNormal];
    
    //ASSIGNING THE BUTTON WITH IMAGE TO BACK BAR BUTTON
    
    UIBarButtonItem *refreshBarButton = [[[UIBarButtonItem alloc] initWithCustomView:refreshButton] autorelease];
    self.navigationItem.leftBarButtonItem = refreshBarButton;

Dejar respuesta

Please enter your comment!
Please enter your name here