2012-05-23 22 views
5

Usando UIBarbuttonItem, initWithImage Obtengo una imagen que quiero más pequeña.Cómo cambiar el tamaño de imagen UIBarButtonItem

Creo que no hay forma de cambiar el tamaño de la imagen.

UIedgeInsetMake no funciona en absoluto. Cambiar el tamaño de la imagen no funciona tampoco (pixelado). Tengo un icono de @ 2x 48x48 y un 24x24 normal. crear una nueva imagen con borde vacío más grande no funciona.

Si uso un 20x20 pixelará. no importa qué.

¿Alguna solución? ¡Gracias!

Respuesta

1

Si desea cambiar el tamaño del botón para que coincida con la imagen, podría ser mejor crear un UIButton y personalizar el UIBarButtonItem. En UIBarButtonItem initWithImage, la imagen se escala para ajustarse al UIBarButtonItem.

Reloj this anser para obtener más información sobre cómo hacerlo.

+0

Gracias por su respuesta, pero el tamaño del botón está muy bien, en realidad, es perfecto. Es la imagen dibujada en el interior que quiero más pequeña. –

3

Puede utilizar el BarbuttonItem personalizada para establecer la imagen y ajustar el tamaño con el tamaño del título mediante el método de abajo:

+(UIBarButtonItem *)createToolBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a 
{ 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
// Since the buttons can be any width we use a thin image with a stretchable center point 
UIImage *buttonImage = [[UIImage imageNamed:@"toolbarbutton_button_mouseup.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
UIImage *buttonPressedImage = [[UIImage imageNamed:@"toolbarbutton_button_mouseover.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
[[button titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0f]]; 
//[[button titleLabel] setFont:[UIFont fontWithName:@"Futura-Medium" size:12.0]]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; 
[[button titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)]; 

CGRect buttonFrame = [button frame]; 
buttonFrame.size.width = [t sizeWithFont:[UIFont boldSystemFontOfSize:12.0]].width + 24.0; 

//Applicable only for iPhone FrameFun 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[[NSUserDefaults standardUserDefaults] stringForKey:@"is_Landscape"] isEqualToString:@"landscape"]) { 
    buttonFrame.size.height = 23.0; 
}else { 

    buttonFrame.size.height = buttonImage.size.height; 
} 

[button setFrame:buttonFrame]; 

[button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted]; 

[button setTitle:t forState:UIControlStateNormal]; 

[button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
return [buttonItem autorelease]; 

} 

Este método le permite hacer el tamaño dinámico del botón de imagen deseo con. Aquí he usado stretchableImageWithLeftCapWidth para ajustar la imagen. Creo que te ayudará. Puede usar todo el método para hacer Custom BarButton también.

+0

buen código, pero no es lo que estoy buscando. No quiero "dibujar" un botón personalizado. Quiero un elemento Barbutton clásico con una imagen en el interior un poco más pequeña que lo que se dibuja en el interior por defecto. –

5

Esto se puede lograr mediante la siguiente,

  1. inspector de tamaño abierto del UIBarbuttonItem
  2. cambio de los valores para "Barra de artículos" -> imagen de la inserción -> arriba/abajo/izquierda/derecha.

Darle una oportunidad ...

+0

Esto me funciona a la perfección. Especialmente, útil para imágenes .PDF –

Cuestiones relacionadas