2015-08-06 4 views
10

Я хочу изменить шрифт заголовка на Avenir, и я хочу сделать его белым. Вот мой код в методе viewDidLoad:Как изменить шрифт и цвет текста названия UINavigationBar

UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Avenir", size: 20)!] 
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

Этот код изменяет только цвет заголовка, а не шрифт. Кроме того, я попытался реализовать это в файле делегирования приложений, но это не сработало.

Вот что мой UINavigationBar выглядит следующим образом: enter image description here

Я хочу, чтобы название, чтобы иметь шрифт Avenir, а также. Как мне это достичь?

ответ

17

Я использую это:

Update, кажется, что это нужно сделать так:

self.navigationController?.navigationBar.barStyle  = UIBarStyle.Black // I then set the color using: 

    self.navigationController?.navigationBar.barTintColor = UIColor(red: 204/255, green: 47/255, blue: 40/255, alpha: 1.0) // a lovely red 

    self.navigationController?.navigationBar.tintColor = UIColor.whiteColor() // for titles, buttons, etc. 

    let navigationTitleFont = UIFont(name: "Avenir", size: 20)! 

    self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: navigationTitleFont] 
+0

Спасибо за ваш ответ! Я попытался реализовать этот код, но теперь у меня есть шрифт Avenir. Однако он не белый. Любые другие предложения? –

+0

обновлено, вышло из строя или два, извините за это! –

+0

Спасибо! Это решило мою проблему! –

1

Я бы просто создать выход и сделать это:

@IBOutlet weak var navigationBar: UINavigationBar! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Avenir", size: 30)!] 
} 
+0

Спасибо за ваш ответ! Я создал все элементы пользовательского интерфейса программно, без интерфейса Builder. Таким образом, это решение не соответствует моим потребностям. –

+0

Без проблем я попробовал. – Volkodav

4

Если вы хотите стили, которые будут применяться через все приложение, добавить эти строки в файл AppDelegate.m.

NSShadow* shadow = [NSShadow new]; 
shadow.shadowOffset = CGSizeMake(0.0f, 0.0f); 
shadow.shadowColor = [UIColor blackColor]; 

[[UINavigationBar appearance] setTitleTextAttributes: @{ 
NSForegroundColorAttributeName: [UIColor whiteColor], 
NSFontAttributeName: [UIFont fontWithName:@"Kelvetica Nobis" size:20.0f], 
NSShadowAttributeName: shadow 
}]; 

NSForegroundColorAttributeName устанавливает цвет шрифта.

NSFontAttributeName устанавливает шрифт персонализированного шрифта в текст заголовка.

NSShadowAttributeName применяет эффект теневого эффекта к тексту, вы можете удалить эту часть, если хотите.

Также вы можете добавить эту строку, чтобы скрыть текст, который появляется на задней панели в панели действий, когда вы переходите к другому виду в навигационном контроллере.

[[UIBarButtonItem appearance] 
    setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) 
    forBarMetrics:UIBarMetricsDefault]; 

Надеется, что это поможет вашему вопросу :)

2

Вашего кода OK вам просто необходимо установить все titleTextAttributes в одной строке:

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white , NSFontAttributeName: UIFont(name: "Avenir", size: 17)!] 
Смежные вопросы