Ich habe eine UIBarButtonItem
in meinem UIToolbar
Titel Fertig . Jetzt möchte ich die Schriftart von der Standardeinstellung in "Trebuchet MS" mit Fettdruck ändern . Wie kann ich das machen?
Ich habe eine UIBarButtonItem
in meinem UIToolbar
Titel Fertig . Jetzt möchte ich die Schriftart von der Standardeinstellung in "Trebuchet MS" mit Fettdruck ändern . Wie kann ich das machen?
Antworten:
Da UIBarButtonItem von UIBarItem erbt, können Sie es versuchen
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
Dies gilt jedoch nur für iOS5. Für iOS 3/4 müssen Sie eine benutzerdefinierte Ansicht verwenden.
Um genau zu sein, kann dies wie folgt durchgeführt werden
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
[UIColor greenColor], NSForegroundColorAttributeName,
nil]
forState:UIControlStateNormal];
Oder mit Objektliteral-Syntax:
[buttonItem setTitleTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
Hier ist der Einfachheit halber die Swift-Implementierung:
buttonItem.setTitleTextAttributes([
NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedStringKey.foregroundColor: UIColor.green],
for: .normal)
Für diejenigen, die daran interessiert sind UIAppearance
, ihre UIBarButtonItem
Schriftarten in der gesamten App zu gestalten, kann dies mithilfe der folgenden Codezeile erreicht werden:
Ziel c:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift 2.3:
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white
],
for: .normal)
Swift 3
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
Swift 4
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
Oder für ein einzelnes UIBarButtonItem (nicht für alle Apps), wenn Sie eine benutzerdefinierte Schriftart für eine bestimmte Schaltfläche haben:
Swift 3
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Swift 4
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Natürlich können Sie die Schriftart und Größe nach Belieben ändern. Ich ziehe es vor, diesen Code in die AppDelegate.m
Datei im didFinishLaunchingWithOptions
Abschnitt einzufügen.
Verfügbare Attribute (fügen Sie sie einfach hinzu NSDictionary
):
NSFontAttributeName
: Ändern Sie die Schriftart mit a UIFont
NSForegroundColorAttributeName
: Ändern Sie die Farbe mit a UIColor
NSShadow
: Schlagschatten hinzufügen (siehe NSShadow
Klassenreferenz)(Aktualisiert für iOS7 +)
In Swift würden Sie dies wie folgt tun:
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
Dies sind großartige Antworten oben. Nur für iOS7 aktualisieren:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift3
buttonName.setAttributedTitle([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.red,NSBackgroundColorAttributeName:UIColor.black],
forState: UIControlState.Normal)
schnell
barbutton.setTitleTextAttributes([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()],
forState: UIControlState.Normal)
Ziel c
[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName,
[UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName,
nil]
forState:UIControlStateNormal];
Um dies für einige, UIBarButtonItems
aber nicht alle zu tun, empfehle ich den folgenden Ansatz.
UIBarButtonItem
Unterklasse. Fügen Sie nichts hinzu - Sie werden es nur als benutzerdefinierte Klasse im Storyboard und als Proxy für das Erscheinungsbild verwenden ...UIBarButtonItems
in Ihre UnterklasseUIBarButtonItem
Unterklasse und fügen Sie die folgende Zeile hinzuapplication:didFinishLaunchingWithOptions:
In meinem Fall habe ich nur UIBarButtonItem
zu dem Zweck, den Text fett zu schreiben, eine Unterklasse erstellt:
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
In Swift 4 können Sie die Schriftart und Farbe ändern, UIBarButtonItem
indem Sie den folgenden Code hinzufügen.
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
Dies ist der richtige Weg: Deklarieren Sie Ihr barButtonItem (in diesem Fall rightBarButtonItem) und fügen Sie es setTitleTextAttributes hinzu.
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
nachdem Sie Titelattribute hinzufügen können
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
Sie können die Größe, das Gewicht (fett, schwer, normal usw.) und die Farbe ändern, wie Sie es bevorzugen ... Hoffe, diese Hilfe :)
Swift 5-Implementierung
rightButtonItem.setTitleTextAttributes([
NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedString.Key.foregroundColor: UIColor.green],
for: .normal)
In der gesamten App:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
Angenommen, Sie möchten iOS4 und früher unterstützen, ist es am besten, eine Balkenschaltfläche mit dieser initWithCustomView:
Methode zu erstellen und eine eigene Ansicht bereitzustellen, die so etwas wie ein UIButton sein kann, mit dem Sie die Schriftart einfach anpassen können.
Sie können einen UIButton auch in Interface Builder auf eine Symbolleiste oder Navigationsleiste ziehen, wenn Sie die Schaltfläche nicht programmgesteuert, sondern per Drag & Drop erstellen möchten.
Leider bedeutet dies, dass Sie das Hintergrundbild der Schaltfläche selbst erstellen. Es gibt keine Möglichkeit, die Schriftart eines Standard-UIBarButtonItem vor iOS5 anzupassen.
Sie können UIView
programmgesteuert eine benutzerdefinierte erstellen :
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
Fügen Sie dann Ihrer benutzerdefinierten Ansicht Bilder, Beschriftungen oder was auch immer Sie möchten hinzu:
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
Jetzt steck es in deine UIBarButtomItem
.
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
Und schließlich fügen Sie barButtonItem zu Ihrer Navigationsleiste hinzu.
Zum Abschluss möchte ich diese Methode hinzufügen, die 2019 noch in Objective-C verwendet wird. :)
_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_titleLabel.text = _titleBarButtonItem.title;
_titleLabel.textColor = UIColor.whiteColor;
_titleLabel.font = [UtilityMethods appFontProDisplayBold:26.0];
[_titleLabel sizeToFit];
UIBarButtonItem *titleLabelItem = [[UIBarButtonItem alloc] initWithCustomView:_titleLabel];