objective-c xcode uibarbuttonitem

objective c - ¿La imagen de UIBarButtonItem permanece azul y no es el color original de la imagen?



objective-c xcode (8)

¿Por qué el ícono info.png permanece azul y no viene con el color original de esa imagen? Estoy usando el siguiente código a continuación:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"info.png"] style:UIBarButtonItemStylePlain target:self action:@selector(info:)];


Cambia el color del tinte del elemento del botón de la barra desde el guión gráfico. O color de la imagen en el storyboard.

El color debe ser el color esperado como hex o rgb.


Debido a que el color de barButtonItems en su aplicación está relacionado con la propiedad tintColor en la ventana de la aplicación.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.tintColor = [UIColor redColor]; return YES; }


Ok, lo tengo ... Puse la imagen a su estado original primero.

UIImage *image = [[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(info:)];


Para Swift 2.1+ se vería así:

let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

o simplemente

let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(.AlwaysOriginal)


Por defecto, la imagen en los elementos del botón de la barra de UINavigationBar se procesa usando el modo de plantilla. Puedes configurarlo en original.

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] style:UIBarButtonItemStylePlain target:self action:@selector(info:)];


Swift 3:

let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)


Swift 4:

let image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal) navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(leftBarButtonPressed))


Usted puede también de los activos. Vaya a Assets.xcassets >> Seleccione la imagen que se está utilizando como imagen de elemento de botón. Toque en el inspector de atributos en el panel lateral derecho. Elija renderizar como imagen original. Será por defecto antes. Ahora verás la imagen en color.