Шрифт на кнопке "Назад" на панели навигации (Swift)
Я могу настроить все остальные аспекты внешнего вида моей панели навигации, но шрифт "Назад" остается стойким.
MWE ниже показывает четыре вещи, которые я безуспешно пытался
1)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Helvetica-Bold", size: 4)!], for: .normal)
return true
}
2) 3) 4)
class customNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedString.Key.font : UIFont(name: "Rockwell", size: 4)!,
NSAttributedString.Key.foregroundColor : UIColor.white,
], for: .normal )
navigationItem.backBarButtonItem?.setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "Chalkduster", size: 7)!], for: .normal)
navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes([NSAttributedString.Key.font: UIFont(name: "AvenirNextCondensed-DemiBoldItalic", size: 4)!], for: .normal)
}
}
2 ответа
В iOS 13 все просто:
let app = UINavigationBarAppearance()
app.backButtonAppearance.normal.titleTextAttributes = [
// whatever
]
UINavigationBar.appearance().standardAppearance = app
До iOS 13 API не проводил различий, которые вы хотите провести. Вам просто нужно установить атрибуты текста заголовка отдельных кнопок панели для всех кнопок возврата по одной за раз.
let title = // ...
let back = UIBarButtonItem(title: title, style: .plain, target: nil, action: nil)
back.setTitleTextAttributes([
// whatever
], for: .normal)
self.navigationItem.backBarButtonItem = back
(Помните также, что элемент кнопки задней панели не является элементом кнопки задней панели, когда этот контроллер представления является видимым, а когда другой контроллер представления помещается поверх этого.)
Мне кажется, что это решение хорошо работает:
// Set all fonts in the navigation controller
class CustomNavigationController: UINavigationController {
// Font names
let normalFontName = "AppleSDGothicNeo-Medium"
let boldFontName = "AppleSDGothicNeo-Bold"
// Font size
let fontSize = CGFloat(13)
// Create fonts
let backButtonFont = UIFont(name: normalFontName, size: fontSize)
let titleFont = UIFont(name: boldFontName, size: fontSize)
override func viewDidLoad() {
super.viewDidLoad()
// Set standard appearance
let appearance = UINavigationBarAppearance()
appearance.backButtonAppearance.normal.titleTextAttributes = [NSAttributedString.Key.font: backButtonFont]
appearance.titleTextAttributes = [NSAttributedString.Key.font: titleFont]
UINavigationBar.appearance().standardAppearance = appearance
}
}