UITabBarItem de color de la imagen es de color gris, mientras que la imagen original es de color blanco

Puedo utilizar el código siguiente para crear la imagen para mi UITabBarItem

self.tabBarItem.image = [UIImage imageNamed:@"tab_img.png"];

Este tab_img.png consiste en negro, blanco y de color claro. Pero en aplicación de la parte de la imagen que es de color negro y el blanco se convierte en gris. Cómo puedo cambiar este gris y blanco ?

UITabBarItem de color de la imagen es de color gris, mientras que la imagen original es de color blanco

UITabBarItem de color de la imagen es de color gris, mientras que la imagen original es de color blanco

  • Puede agregar la imagen de aquí?
  • He añadido esta casa de la Imagen.
InformationsquelleAutor ij_ | 2013-02-26

7 Kommentare

  1. 34

    En iOS7, si el uso del IB puede subclase UITabBarController, a continuación, añadir esto:

    + (void)initialize
    {
        //the color for the text for unselected tabs
        [UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} forState:UIControlStateNormal];
    
        //the color for selected icon
        [[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];    
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
            for (UITabBarItem *tbi in self.tabBar.items) {
                tbi.image = [tbi.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            }
        }
    }

    si usted crear los elementos manualmente debe establecer la UIImageRenderingModeAlwaysOriginal en cada icono y agregar el código de inicialización.

    • El texto del elemento seleccionado también parece ser afectada por la primera línea. He tenido que añadir: [UITabBarItem.apariencia setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} forState:UIControlStateSelected]; para obtener el elemento seleccionado el texto correcto.
    • setSelectedImageTintColor: está en desuso desde iOS8 reemplazarlo con setTintColor:
    • Gracias… solo una adición: también debe establecer la lct.selectedImage = [tbi.selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    • Swift versión: self.tabBar.items?.forEach({ tbi in tbi.image = tbi.image?.withRenderingMode(.alwaysOriginal); tbi.selectedImage = tbi.selectedImage?.withRenderingMode(.alwaysOriginal); }); p.s. Sé que Swift no necesita coma, pero como no la nueva línea en el comentario aquí, pongo comas
  2. 10

    Conjunto de seleccionados y no seleccionados de la imagen.

    [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"mehr_icon"] withFinishedUnselectedImage:[UIImage imageNamed:@"mehr_icon"]];
    • El Método está en desuso en iOS 7, el Uso de @Cornel Damian Método en iOS 7 o superior.
    • eso es todo, gracias @fibnochi
  3. 9

    Si usted está utilizando la imagen de activos, acaba de establecer el campo «mostrar Como» de sus imágenes (seleccionados y no seleccionados imágenes) a «Imagen Original» (ejemplo)

    A continuación, en su xib conjunto de «Imagen» y la «Imagen Seleccionada» campos en su Ficha Elemento de la Barra de
    (ejemplo)

    • Gracias, me salvaste el día, también.
    • Me gusta esta idea, pero la duplicación de la imagen no es el camino a seguir.
  4. 0

    Tuve el mismo problema una vez, puedo usar imágenes con el blanco y el alfa y sólo así imagen

    Me puse con self.tabBarItem.image = [UIImage imageNamed:@"Liste"];

    • cambiar [UIImage imageNamed:@»tab_img.png»]; a cambio de [UIImage imageNamed:@»tab_img»]; no ayuda no ayuda
  5. 0

    Única Manera es ir a IB(interface builder) y seleccione el UITabBarItem en su Controlador de Vista y vaya a «archivo inspector», desplácese hacia abajo y verás Global Tinte de ella se puede establecer ningún color o cualquier color que usted quiere que se llevará a efecto para la imagen seleccionada.

    según el siguiente código es la preocupación

    setFinishedSelectedImage: withFinishedUnselectedImage:;

    este ya no se encuentra disponible en iOS 7 en lugar podemos utilizar

    [yourCustomTabBarItem setSelectedImage:---];

    pero esto también tendrá el efecto de este Mundial matiz de color.

  6. 0

    Para mí, la mejor manera es cambiar el color de la imagen.

     func imageWithColor(_ color: UIColor) -> UIImage? {
            UIGraphicsBeginImageContextWithOptions(size, false, scale)
            let context = UIGraphicsGetCurrentContext()!
            context.translateBy(x: 0, y: size.height)
            context.scaleBy(x: 1.0, y: -1.0)
            context.setBlendMode(.normal)
    
            let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
            context.clip(to: rect, mask: cgImage!)
    
            color.setFill()
            context.fill(rect)
    
            let newImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
            newImage.accessibilityIdentifier = accessibilityIdentifier
            return newImage
        }

    a continuación, puede actualizar el tabBarItem de propiedades tales como la imagen y selectedImage:

     func setupColorAttributes(to item: UITabBarItem) {
            item.image = item.image?.imageWithColor(.white)?.withRenderingMode(.alwaysOriginal)
            item.selectedImage = item.image?.imageWithColor(.highLight)?.withRenderingMode(.alwaysOriginal)
        }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea