Как изменить шрифт и цвет текста заголовка UINavigationBar
Я хочу изменить шрифт заголовка на Avenir, и я хочу сделать его белым. Вот мой код viewDidLoad
способ:
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: UIFont(name: "Avenir", size: 20)!]
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
этот код меняет только цвет заголовка, а не шрифт. Кроме того, я попытался реализовать это в файле делегата приложения, но это не сработало.
вот как выглядит мой UINavigationBar:
Я хочу, чтобы название также имело шрифт Avenir. Как мне этого достичь?
4 ответов
Я использую этот:
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]
Если вы хотите, чтобы стили применялись через все приложение, добавьте эти строки в 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];
надеюсь, это поможет вашему вопросу:)
ваш код в порядке, вам просто нужно установить все titleTextAttributes
в одну строку:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white , NSFontAttributeName: UIFont(name: "Avenir", size: 17)!]
Я бы просто создал выход и сделал это:
@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)!]
}