Estou tentando adicionar um rótulo à minha barra de ferramentas. O botão funciona muito bem, no entanto, quando adiciono o objeto de rótulo, ele trava. Alguma ideia?
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
user8359
fonte
fonte
Para aqueles que usam o Interface Builder para fazer o layout do seu
UIToolBar
, também é possível fazer isso usando apenas o Interface Builder.Para adicionar a
UILabel
a a,UIToolBar
você precisa adicionar umUIView
objeto genérico ao seuUIToolBar
no IB arrastando um novoUIView
objeto sobre o seuUIToolBar
.IB
irá criar automaticamente umUIBarButtonItem
que será inicializado com seu customUIView
. Em seguida, adicione umUILabel
aoUIView
e edite-oUILabel
graficamente para corresponder ao seu estilo preferido. Você pode então configurar visualmente seus espaçadores fixos e / ou variáveis conforme desejado para posicionar seuUILabel
apropriadamente.Você também deve definir o plano de fundo de
UILabel
eUIView
declearColor
para fazerUIToolBar
com que apareça corretamente sobUILabel
.fonte
Achei a resposta do answerBot muito útil, mas acho que encontrei uma maneira ainda mais fácil, no Interface Builder:
conecte este BarButtonItem a uma propriedade em sua classe (isso está em Swift, mas seria muito semelhante em Obj-C):
adicione outra propriedade para o próprio rótulo:
em viewDidLoad, adicione o seguinte código para definir as propriedades de seu rótulo e adicione-o como customView de seu BarButtonItem
Para atualizar o
UILabel
texto:Resultado:
Você deve ligar
lastUpdateLabel.sizetoFit()
sempre que atualizar o texto do rótulofonte
UILabel* label = [[UILabel alloc] init]; label.text = @"Hello"; label.font = [UIFont systemFontOfSize:16]; [label sizeToFit]; self.barItem.customView = label;
Uma das coisas para que estou usando esse truque é instanciar um
UIActivityIndicatorView
no topo deUIToolBar
, algo que de outra forma não seria possível. Por exemplo, aqui eu tenho umUIToolBar
com 2UIBarButtonItem
, umFlexibleSpaceBarButtonItem
e depois outroUIBarButtonItem
. Eu quero inserir umUIActivityIndicatorView
noUIToolBar
entre o espaço flexível e o botão final (do lado direito). Então, no meu,RootViewController
eu faço o seguinte,fonte
Detalhes
Amostra completa
Resultado
fonte
Semelhante ao construtor de interface usado Matt RI. Mas eu queria ter um
UIWebView
dentro, para que eu pudesse ter algum texto em negrito e outro não (como o aplicativo de e-mail). assimIBOutlet
html
para ter um fundo transparente para que a barra de ferramentas brilheCódigo:
fonte
Se você deseja adicionar uma visualização na visualização da barra de ferramentas, você pode tentar o seguinte:
fonte
Experimente isto:
Nota:
self.barItem
é umUIBarButtonItem
adicionado da biblioteca de objetos e colocado entre dois espaços flexíveis.outra forma é remover a
[self.barItem setCustom:view]
linha e alterar os parâmetros delabel
(largura) para que preencha toda a barra de ferramentas e definir o alinhamento para o meio e a fonte por você no código,fonte