2010-10-11 15 views

Respuesta

35

Puede iniciar el UIBarButtonItem con una vista personalizada que tenga tanto imagen como texto. Aquí hay una muestra que usa un UIButton. La respuesta de

UIImage *chatImage = [UIImage imageNamed:@"08-chat.png"]; 

UIButton *chatButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[chatButton setBackgroundImage:chatImage forState:UIControlStateNormal]; 
[chatButton setTitle:@"Chat" forState:UIControlStateNormal]; 
chatButton.frame = (CGRect) { 
    .size.width = 100, 
    .size.height = 30, 
}; 

UIBarButtonItem *barButton= [[[UIBarButtonItem alloc] initWithCustomView:chatButton] autorelease]; 
self.toolbar.items = [NSArray arrayWithObject:barButton]; 
+0

Para la última línea, aparece un mensaje de error que dice "Solicitar barra de herramientas de miembros" no es una estructura o una unión. ¿Cómo lo hago usando self.navigationItem? .rightBarButtonItem? –

+1

En ese caso, reemplace la última línea con 'self.navigationItem.rightBarButtonItem = barButton;'. O puede usar este método: http://developer.apple.com/library/ios/documentation/uikit/reference /UINavigationItem_Class/Reference/UINavigationItem.html#//apple_ref/doc/uid/TP40006933-CH3-SW17. –

+0

Lo intenté y no se muestra nada. –

2

Kris Markel es un buen comienzo (sólo < iOS7), pero si se utiliza el color del tinte, que wount funciona para la imagen y el estado resaltado del botón.

He creado una categoría que creará un UIBarButtonItem (leftBarButtonItem) que se ve y se comporta como un botón normal de iOS7. Echar un vistazo a: https://github.com/Zero3nna/UIBarButtonItem-DefaultBackButton

7
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal]; 
[button addTarget:target action:@selector(buttonAction:)forControlEvents:UIControlEventTouchUpInside]; 
[button setFrame:CGRectMake(0, 0, 53, 31)]; 
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(3, 5, 50, 20)]; 
[label setFont:[UIFont fontWithName:@"Arial-BoldMT" size:13]]; 
[label setText:title]; 
label.textAlignment = UITextAlignmentCenter; 
[label setTextColor:[UIColor whiteColor]]; 
[label setBackgroundColor:[UIColor clearColor]]; 
[button addSubview:label]; 
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = barButton; 
6

puedo sugerir una manera de cómo hacer esto utilizando Storyboard:

  1. de arrastrar y soltar a la barra de herramientas UIView habitual. Se ajustará automáticamente al elemento del botón de barra. Ajuste el ancho de la vista en "Inspector de tamaño". Cambie el color de fondo de la Vista para borrar el color.

enter image description here

  1. Ponga UIButton y UILabel dentro de una vista. Puede usar restricciones para ajustar sus posiciones. También puede colocar su parte externa de una Vista, por ejemplo, un poco más alto o menos (como en mi foto). Coloque imágenes predeterminadas y resaltadas para UIButton.

  2. Botón de barra de copia Elemento y ajuste otros botones. Agrega espacios flexibles.

  3. Crear salidas.

  4. Hecho :). Cuando se ejecuta la aplicación, se obtiene la barra de herramientas como esta:

enter image description here

P. S. Here puede leer cómo crear subclase de UIToolbar utilizando .xib

+0

Esta podría ser la respuesta correcta. ¡Realmente limpio! – Corona

Cuestiones relacionadas