Problema al añadir una imagen a la barra de herramientas utilizando UIBarButtonItem, mostrando la caja blanca en blanco en lugar de la imagen

StackOverflow https://stackoverflow.com/questions/4028927

Pregunta

No estoy seguro de lo que estoy haciendo mal. El nombre del archivo es correcta, el estilo se define como normal. Pero Im que consigue un banco caja blanca del tamaño de mi imagen. Im usando UINavigationController.

Por favor, ayudar y gracias le agradecen de antemano.

** FYI soy sorta nuevo en Objective C, así que no sea demasiado duro para mí. ;)

 UIBarButtonItem *toolbarChannelGuideButton = [[UIBarButtonItem alloc]
     initWithImage:[UIImage imageNamed:@"channel-guide-button.png"]
     style:UIBarButtonItemStylePlain
     target:self
     action:@selector(action:)];


self.toolbarItems = [NSArray arrayWithObjects:toolbarChannelGuideButton, nil];
[toolbarChannelGuideButton release];
¿Fue útil?

Solución

La razón por la que estaba creando la máscara blanca se debía a que el imposible de UIToolBar permite imágenes en color en él de forma predeterminada. La manera de lograr esto es la creación de un UIImage continuación, asignar un UIButton a esa imagen. A continuación, crear una UIBarButton usando initWithCustomView con el UIButton como la vista personalizada.

Código:

     //Load the image   
     UIImage *buttonImage = [UIImage imageNamed:@"your-image.png"];

     //create the button and assign the image
     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
     [button setImage:buttonImage forState:UIControlStateNormal];

     //sets the frame of the button to the size of the image
     button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

     //creates a UIBarButtonItem with the button as a custom view
     UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];



     self.toolbarItems = [NSArray arrayWithObjects:customBarItem, nil];
     [customBarItem release];

Otros consejos

A partir de iOS 7 se puede utilizar a continuación:

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

¿El canal-guía-button.png pertenecen a proyecto?

Se podría romper este cabo de esta manera:

UIImage *image = [UIImage imageNamed:@"channel-guide-button.png"];
NSLog(@" image = %p", image);
UIBarButtonItem *toolbarChannelGuideButton = [[UIBarButtonItem alloc]
     initWithImage:image
     style:UIBarButtonItemStylePlain
     target:self
     action:@selector(action:)];

o simplemente buscar en su proyecto; -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top