Estoy intentando agregar una etiqueta a mi barra de herramientas. El botón funciona muy bien, sin embargo, cuando agrego el objeto de etiqueta, se bloquea. ¿Algunas ideas?
UIBarButtonItem *setDateRangeButton = [[UIBarButtonItem alloc] initWithTitle:@"Set date range"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(setDateRangeClicked:)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 20, 20)];
label.text = @"test";
[toolbar setItems:[NSArray arrayWithObjects:setDateRangeButton,label, nil]];
// Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];
// Reload the table view
[self.tableView reloadData];
ios
iphone
uibarbuttonitem
usuario8359
fuente
fuente
Para aquellos que usan Interface Builder para diseñar su
UIToolBar
, también es posible hacerlo usando solo Interface Builder.Para agregar un
UILabel
aUIToolBar
, debe agregar unUIView
objeto genérico a suUIToolBar
en IB arrastrando un nuevoUIView
objeto sobre suUIToolBar
.IB
creará automáticamente un archivoUIBarButtonItem
que se inicializará con su archivo personalizadoUIView
. A continuación añadimos unaUILabel
a laUIView
y editar laUILabel
gráfica para que coincida con su estilo preferido. A continuación, puede configurar visualmente sus espaciadores fijos y / o variables como desee para colocarlosUILabel
correctamente.También debe establecer el fondo de
UILabel
y deUIView
paraclearColor
que seUIToolBar
muestre correctamente debajo deUILabel
.fuente
Encontré la respuesta de answerBot muy útil, pero creo que encontré una forma aún más fácil, en Interface Builder:
conecte este BarButtonItem a una propiedad en su clase (esto está en Swift, pero sería muy similar en Obj-C):
agregue otra propiedad para la etiqueta en sí:
en viewDidLoad, agregue el siguiente código para establecer las propiedades de su etiqueta y agréguelo como customView de su BarButtonItem
Para actualizar el
UILabel
texto:Resultado:
Tienes que llamar
lastUpdateLabel.sizetoFit()
cada vez que actualices el texto de la etiqueta.fuente
UILabel* label = [[UILabel alloc] init]; label.text = @"Hello"; label.font = [UIFont systemFontOfSize:16]; [label sizeToFit]; self.barItem.customView = label;
Una de las cosas para las que estoy usando este truco es para crear una instancia
UIActivityIndicatorView
sobre elUIToolBar
, algo que de otra manera no sería posible. Por ejemplo, aquí tengo aUIToolBar
con 2UIBarButtonItem
, aFlexibleSpaceBarButtonItem
, y luego otroUIBarButtonItem
. Quiero insertar unUIActivityIndicatorView
enUIToolBar
entre el espacio flexible y el botón final (de la derecha). Entonces en miRootViewController
hago lo siguiente,fuente
Detalles
Muestra completa
Resultado
fuente
Similar al constructor de interfaces usado por Matt RI. Pero quería tener 1
UIWebView
adentro en su lugar para poder tener un texto en negrita y otro texto no (como la aplicación de correo). EntoncesIBOutlet
html
para tener un fondo transparente para que la barra de herramientas brille a travésCódigo:
fuente
Si desea agregar una vista a la vista de la barra de herramientas, puede intentar esto:
fuente
Prueba esto:
Nota:
self.barItem
es unUIBarButtonItem
agregado de la biblioteca de objetos y se coloca entre dos espacios flexibles.otra forma es eliminar la
[self.barItem setCustom:view]
línea y cambiar los parámetros dellabel
(ancho) para que llene toda la barra de herramientas y establecer la alineación en el medio y la fuente usted mismo en el código,fuente