web-dev-qa-db-fra.com

Comment définissez-vous la taille de la police sur un uibarbuttonitem?

Je ne trouve pas un moyen de définir la taille de la police du titre dans un uibarbuttonittem personnalisé. La seule façon dont je peux penser à me déplacer, c'est de la définir comme une image que j'aimerais éviter. D'autres suggestions?

36
Jim

De manière simple, simplement:

Objectif c:

NSUInteger fontSize = 20;
UIFont *font = [UIFont boldSystemFontOfSize:fontSize];
NSDictionary *attributes = @{NSFontAttributeName: font};

UIBarButtonItem *item = [[UIBarButtonItem alloc] init];

[item setTitle:@"Some Text"];
[item setTitleTextAttributes:attributes forState:UIControlStateNormal];

self.navigationItem.rightBarButtonItem = item;

Rapide:

let fontSize:CGFloat = 20;
let font:UIFont = UIFont.boldSystemFont(ofSize: fontSize);
let attributes:[String : Any] = [NSFontAttributeName: font];

let item = UIBarButtonItem.init();

item.title = "Some Text";
item.setTitleTextAttributes(attributes, for: UIControlState.normal);

self.navigationItem.rightBarButtonItem = item;
81
Mateus

Créez un Uilabel et utilisez -initWithCustomView:.

3
kennytm
[[UIBarButtonItem appearance]setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                     [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                     [UIFont fontWithName:@"FONT-NAME" size:21.0], NSFontAttributeName, nil]
                                           forState:UIControlStateNormal];
2
Abo3atef

En exemple, un exemple concret de ce que KennnyTM suggère, vous créez l'UIBARBUTTONITEM avec quelque chose comme ce qui suit (en code):

UILabel *txtLabel = [[UILabel alloc] initWithFrame:rect];
txtLabel.backgroundColor = [UIColor clearColor];
txtLabel.textColor = [UIColor lightGrayColor];
txtLabel.text = @"This is a custom label";
UIBarButtonItem *btnText = [[[UIBarButtonItem alloc] initWithCustomView:txtLabel] autorelease];

Ensuite, vous pouvez l'ajouter sous la forme d'un texte centré sur une uitoolbar (par exemple) avec les éléments suivants:

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:rect];
toolBar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *flexSpace1 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
UIBarButtonItem *flexSpace2 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

[toolBar setItems:[NSArray arrayWithItems:flexSpace1, btnText, flexSpace2, nil]];

(Bien sûr, pour obtenir un formatage correct, le rect utilisé pour initialiser txtLabel et toolBar devrait être la taille appropriée ... mais c'est un autre exercice!)

2
Jeff Hay

Swift5 :

    let item = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(self.onItemTapped))
    let font:UIFont = UIFont(name: "", size: 18) ?? UIFont()
    item.setTitleTextAttributes([NSAttributedString.Key.font: font], for: UIControl.State.normal);
0
August Lin