43 votes

Changer les propriétés de la police UINavigationBar?

J'ai un UINavigationBar ajouté à ma vue UIViewController. Je veux changer les propriétés des polices. Notez que je veux changer un contrôleur UINavigationBar. Dans mon application où j'utilise UINavigationController, j'utilise self.navigationItem.titleView = label; pour afficher l'étiquette personnalisée.

Comment puis-je obtenir un titre personnalisé dans ma barre UINavigationBar?

PS J'utilise ceci pour définir le texte du titre self.navBar.topItem.title = @"Information"; de mon UINavigationBar.

90voto

Sandeep Points 599

À partir de iOS 5, nous avons à mettre en titre, le texte et la couleur de la police de la barre de navigation à l'aide de titleTextAttribute Dictionnaire(dictionnaire prédéfini dans UInavigation contrôleur de la classe de référence).

[[UINavigationBar appearance] setTitleTextAttributes: 
    [NSDictionary dictionaryWithObjectsAndKeys: 
        [UIColor blackColor], UITextAttributeTextColor, 
           [UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];

Le tutoriel ci-dessous est le meilleur tutoriel pour la personnalisation de UIElements comme UInavigation bar, UIsegmented de contrôle, UITabBar. Cela peut être utile pour vous

http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

21voto

Tieme Points 13569

(Ce n'est pas possible à l'aide de la nouvelle iOS 5.0 Apparence de l'API).

Edit:

iOS >= 5.0 :

Définir le Titre des Attributs de Texte pour la Navigationbar:

// Customize the title text for *all* UINavigationBars
NSDictionary *settings = @{
    UITextAttributeFont                 :  [UIFont fontWithName:@"YOURFONTNAME" size:20.0],
    UITextAttributeTextColor            :  [UIColor whiteColor],
    UITextAttributeTextShadowColor      :  [UIColor clearColor],
    UITextAttributeTextShadowOffset     :  [NSValue valueWithUIOffset:UIOffsetZero]};

[[UINavigationBar appearance] setTitleTextAttributes:settings];

iOS < 5.0

UINavigationItem n'a pas une propriété appelée étiquette ou quelque chose, seulement un titleView. Vous êtes seulement en mesure de définir la police par la définition d'une étiquette personnalisée que ce titre vue Vous pouvez utiliser le code suivant: (comme expliqué ici)

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
label.font = [UIFont fontWithName:@"YOURFONTNAME" size:20.0];
label.shadowColor = [UIColor clearColor];
label.textColor =[UIColor whiteColor];
label.text = self.title;  
self.navigationItem.titleView = label;      
[label release];

7voto

stalinkay Points 236

Il suffit de mettre cela dans le délégué de votre application

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 

De Ray Wenderlich:

http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

 [[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0], 
UITextAttributeTextColor, 
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8], 
UITextAttributeTextShadowColor, 
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)], 
UITextAttributeTextShadowOffset, 
[UIFont fontWithName:@"STHeitiSC-Light" size:0.0], 
UITextAttributeFont, nil]];
 

1voto

Nikolay Shubenkov Points 287

lien ci-dessous va vous aider. Il dépend de l'endroit où vous souhaitez définir les propriétés de police actuels viewController la barre de navigation de tous les n'importe où dans l'application

vous pouvez trouver bon tutoriel ici% http://www.appcoda.com/customize-navigation-status-bar-ios-7/?utm_campaign=iOS_Dev_Weekly_Issue_118&utm_medium=email&utm_source=iOS%2BDev%2BWeekly

L'idée de base est de créer NSDictionary instance et de le remplir avec votre choix de police et d'autres propriétés. J'ai terminé avec cette solution:

dans votre-viewDidLoad méthode de contrôleur après [super viewDidLoad] mettre ces lignes:

UIColor *color = [UIColor redColor];
NSShadow *shadow = [NSShadow new];
UIFont *font = [UIFont fontWithName:@"EnterYourFontName" size:20.0]
shadow.shadowColor = [UIColor greenColor];
shadow.shadowBlurRadius = 2;
shadow.shadowOffset = CGSizeMake(1.0f, 1.0f);

//fill this dictionary with text attributes
NSMutableDictionary *topBarTextAttributes = [NSMutableDictionary new];
    //ios 7
topBarTextAttributes[NSForegroundColorAttributeName] = color;
    //ios 6
topBarTextAttributes[UITextAttributeTextColor] = color;
    //ios 6
topBarTextAttributes[UITextAttributeTextShadowOffset] = [NSValue valueWithCGSize:shadow.shadowOffset];
topBarTextAttributes[UITextAttributeTextShadowColor] = shadow.shadowColor;
    //ios 7
topBarTextAttributes[NSShadowAttributeName] = shadow;
    //ios 6
topBarTextAttributes[UITextAttributeFont]   = font;
    //ios 7
topBarTextAttributes[NSFontAttributeName]   = font;

//for all the controllers uncomment this line
//    [[UINavigationBar appearance]setTitleTextAttributes:topBarTextAttributes];

//for current controller uncoment this line
//    self.navigationController.navigationBar.titleTextAttributes = topBarTextAttributes;

0voto

soryngod Points 1332

N'oubliez pas d'ajouter la police à votre cible.

J'ai fait tout ce qui était possible avec une police et je ne pouvais pas la charger, alors qu'en fait la police n'était pas membre de ma cible.

Vérifiez donc l'appartenance à la cible sur la police personnalisée ajoutée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X