Размер шрифта заголовка панели навигации - PullRequest
13 голосов
/ 08 марта 2012

Мне нужно изменить размер текста заголовка панели навигации для одного контроллера представления в моем приложении для iPhone. Я использую iOS5, и попробовал следующий код:

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]];
}

Однако это относится только к tabBarItem.

Ответы [ 5 ]

25 голосов
/ 14 июня 2013

Вы уже получили, но вы также можете использовать следующие методы атрибутов.

Для цвета,

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor RedColor],UITextAttributeTextColor, nil];

self.navigationController.navigationBar.titleTextAttributes = attributes;

Для размера,

NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],UITextAttributeFont, nil];

self.navigationController.navigationBar.titleTextAttributes = size;

Спасибо.

Для iOS 7 и выше

Для размера:

NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],NSFontAttributeName, nil];

self.navigationController.navigationBar.titleTextAttributes = size;
14 голосов
/ 08 марта 2012

Необходимо получить свойство панели навигации и использовать @property(nonatomic, copy) NSDictionary *titleTextAttributes.

Для получения дополнительной информации см. Справочник по классам UINavigationBar и Настройка раздела UINavigationBar .

Чтобы лучше понять ваш вопрос: какой тип контроллера у вас есть?

РЕДАКТИРОВАТЬ

[self.navigationController.navigationBar setTitleTextAttributes:...];

, если вы получаете доступ к navigationController в толканииконтроллер.

[navigationController.navigationBar setTitleTextAttributes:...];

, если navigationController ваш текущий UINavigationController.Это может быть использовано, например, если у вас есть следующий код:

UINavigationController* navigationController = ...;
[navigationController.navigationBar setTitleTextAttributes:...];
10 голосов
/ 08 ноября 2014

Начиная с iOS7, мне всегда нравится следующее:

[[UINavigationBar appearance] setTitleTextAttributes:
    [NSDictionary dictionaryWithObjectsAndKeys:
        [UIFont fontWithName:@"Helvetica-Bold" size:18.0],NSFontAttributeName,
        nil]];

Ключевое слово UITextAttributeFont было отжато с iOS7, вы должны заменить на NSFontAttributeName.

Youможно использовать [self.navigationController.navigationBar setTitleTextAttributes:] для настройки внешнего вида навигационного контроллера, в то время как [UINavigationBar appearance] setTitleTextAttributes:] работает для всего вашего приложения напрямую (конечно, вам нужно поместить его в положение свойства.)

4 голосов
/ 08 марта 2016

Swift 2.0:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        UINavigationBar.appearance().titleTextAttributes = [
            NSFontAttributeName: UIFont(name: "DINNextLTW04-Regular", size: 20)!
        ]

        return true
    }

Или

 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)!];

 }
0 голосов
/ 15 апреля 2016

Мой пример

guard let sansLightFont = UIFont(name: "OpenSans", size: 20) else { return }
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName : sansLightFont]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...