5

No estoy seguro de lo que estoy haciendo mal. El nombre del archivo es correcto, el estilo está configurado como simple. Pero obtengo una caja blanca bancaria del tamaño de mi imagen. Estoy usando UINavigationController.Problema al agregar una imagen a la barra de herramientas usando UIBarButtonItem, mostrando un cuadro blanco en blanco en lugar de la imagen

Por favor ayúdenos y gracias gracias de antemano.

** FYI Soy muy nuevo con el objetivo c, así que no seas demasiado duro conmigo. ;)

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]; 

Respuesta

9

La razón por la que estaba creando la máscara blanca era porque el UIToolBar No permite imágenes en color en él por defecto. La forma de lograr esto es crear un UIImage y luego asignar un UIButton a esa imagen. A continuación, cree un UIBarButton utilizando initWithCustomView con UIButton como 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]; 
+0

gracias! Esto funcionó perfectamente ... – manderson

+0

UIButtonTypeCustom solucionó esto por mí. Estaba usando roundedrect uno – coolcool1994

-1

¿Channel-guide-button.png pertenece al proyecto?

Se podría romper esto así:

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 ;-)

+0

me registré mi proyecto y sí, es en ese país. También ejecuté un NSLog que mostraba un número de bajo nivel. –

+0

image = 0x6b45340 es lo que se muestra en la consola –

+0

Oh bien. FWIW, generalmente creo UIBarButtonItem con initWithCustomView: y paso en UIButton con imagen asociada a él. Voy a publicar el ejemplo de código mañana. – westsider

1

Comenzando con 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:)]; 
Cuestiones relacionadas