Je dois modifier la taille du titre de la barre de navigation pour un contrôleur de vue dans mon application iPhone. J'utilise iOS5 et j'ai essayé le code suivant:
if ([self.tabBarItem respondsToSelector:@selector(setTitleTextAttributes:)]) {
NSLog(@"*** Support method(iOS 5): setTitleTextAttributes:");
[self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont,
[UIColor blackColor], UITextAttributeTextColor,
[UIColor grayColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeTextShadowOffset,
nil]];
}
Cependant, cela ne s'applique qu'au tabBarItem.
Vous devez récupérer la propriété de la barre de navigation et l'utilisation @property(nonatomic, copy) NSDictionary *titleTextAttributes
.
Pour plus d'informations, voir Référence de la classe UINavigationBar et Personnalisation de la section UINavigationBar .
Pour mieux comprendre votre question: quel type de contrôleur avez-vous?
EDIT
[self.navigationController.navigationBar setTitleTextAttributes:...];
si vous accédez à la navigationController
dans un contrôleur poussé.
[navigationController.navigationBar setTitleTextAttributes:...];
si navigationController
est votre UINavigationController
actuelle. Cela peut être utilisé par exemple si vous avez le code suivant:
UINavigationController* navigationController = ...;
[navigationController.navigationBar setTitleTextAttributes:...];
Vous l'avez déjà, mais vous pouvez également utiliser les méthodes d'attributs suivantes.
Pour la couleur,
NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor RedColor],UITextAttributeTextColor, nil];
self.navigationController.navigationBar.titleTextAttributes = attributes;
Pour la taille,
NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],UITextAttributeFont, nil];
self.navigationController.navigationBar.titleTextAttributes = size;
Merci.
Pour iOS 7 et supérieur
Pour la taille:
NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],NSFontAttributeName, nil];
self.navigationController.navigationBar.titleTextAttributes = size;
Depuis iOS7, j'aime toujours ce qui suit:
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:18.0],NSFontAttributeName,
nil]];
Le mot clé UITextAttributeFont
a été déprimé sous iOS7, vous êtes censé le remplacer par NSFontAttributeName
.
Vous pouvez utiliser
[self.navigationController.navigationBar setTitleTextAttributes:]
pour définir l’apparence de quelqu'un navigationController, alors que [UINavigationBar appearance] setTitleTextAttributes:]
fonctionne directement pour l’ensemble de votre application (vous devez bien sûr la placer dans une position de propriété).
Swift 2.0:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().titleTextAttributes = [
NSFontAttributeName: UIFont(name: "DINNextLTW04-Regular", size: 20)!
]
return true
}
Ou
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBarHidden = false
self.title = "SAMPLE"
//Set Color
let attributes: AnyObject = [ NSForegroundColorAttributeName: UIColor.redColor()]
self.navigationController!.navigationBar.titleTextAttributes = attributes as? [String : AnyObject]
//Set Font Size
self.navigationController!.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Arial", size: 37.0)!];
}
Mon exemple
guard let sansLightFont = UIFont(name: "OpenSans", size: 20) else { return }
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName : sansLightFont]