Ich versuche, meiner Symbolleiste eine Beschriftung hinzuzufügen. Die Schaltfläche funktioniert hervorragend, aber wenn ich das Beschriftungsobjekt hinzufüge, stürzt es ab. Irgendwelche Ideen?
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
Benutzer8359
quelle
quelle
Für diejenigen, die Interface Builder zum Layouten verwenden
UIToolBar
, ist es auch möglich, dies nur mit Interface Builder zu tun.Um ein
UILabel
zu einem hinzuzufügen , müssenUIToolBar
SieUIView
IhremUIToolBar
in IB ein generisches Objekt hinzufügen, indem Sie ein neuesUIView
Objekt über Ihr ziehenUIToolBar
.IB
erstellt automatisch eineUIBarButtonItem
, die mit Ihrer benutzerdefinierten initialisiert wirdUIView
. Als nächstes fügen Sie einUILabel
zumUIView
und bearbeiten dieUILabel
grafisch Ihren bevorzugten Stil anzupassen. Sie können dann Ihre festen und / oder variablen Abstandshalter nach Bedarf visuell einrichten, um sieUILabel
entsprechend zu positionieren .Außerdem müssen Sie den Hintergrund der beiden
UILabel
und dieUIView
an undclearColor
rufen Sie dieUIToolBar
richtig unter die durch zu zeigenUILabel
.quelle
Ich fand die Antwort von answerBot sehr nützlich, aber ich denke, ich habe in Interface Builder einen noch einfacheren Weg gefunden:
Stecken Sie dieses BarButtonItem in eine Eigenschaft in Ihrer Klasse (dies ist in Swift, wäre aber in Obj-C sehr ähnlich):
Fügen Sie eine weitere Eigenschaft für das Label selbst hinzu:
Fügen Sie in viewDidLoad den folgenden Code hinzu, um die Eigenschaften Ihres Etiketts festzulegen, und fügen Sie ihn als benutzerdefinierte Ansicht Ihres BarButtonItem hinzu
So aktualisieren Sie den
UILabel
Text:Ergebnis:
Sie müssen
lastUpdateLabel.sizetoFit()
jedes Mal aufrufen, wenn Sie den Beschriftungstext aktualisierenquelle
UILabel* label = [[UILabel alloc] init]; label.text = @"Hello"; label.font = [UIFont systemFontOfSize:16]; [label sizeToFit]; self.barItem.customView = label;
Eines der Dinge, für die ich diesen Trick verwende, ist das Instanziieren eines
UIActivityIndicatorView
darüberUIToolBar
, etwas, das sonst nicht möglich wäre. Zum Beispiel habe ich hier eineUIToolBar
mit 2UIBarButtonItem
, eineFlexibleSpaceBarButtonItem
und dann eine andereUIBarButtonItem
. Ich möchte einenUIActivityIndicatorView
in denUIToolBar
zwischen dem flexiblen Raum und dem letzten (rechten) Knopf einfügen . AlsoRootViewController
mache ich in meinem folgenden:quelle
Einzelheiten
Vollständige Probe
Ergebnis
quelle
Ähnlich wie bei Matt RI wurde der Interface Builder verwendet. Aber ich wollte
UIWebView
stattdessen 1 drinnen haben, damit ich etwas Fettdruck und anderen Text nicht haben kann (wie die Mail-App). SoIBOutlet
html
, um einen transparenten Hintergrund zu erhalten, damit die Symbolleiste durchscheintCode:
quelle
Wenn Sie der Symbolleistenansicht eine Ansicht hinzufügen möchten, können Sie Folgendes versuchen:
quelle
Versuche dies:
Hinweis:
self.barItem
ist einUIBarButtonItem
von der Objektbibliothek hinzugefügt und zwischen zwei flexiblen Räumen.Eine andere Möglichkeit besteht darin, die
[self.barItem setCustom:view]
Linie zu entfernen und die Parameter derlabel
(Breite) so zu ändern , dass sie die gesamte Symbolleiste ausfüllt und die Ausrichtung auf die Mitte und die Schriftart selbst im Code festlegt.quelle