Я знаю, что можно задать семейство шрифтов, размер и цвет шрифта отдельно для «больших» и «маленьких» заголовков, используя prefersLargeTitles
.
Вопрос: есть ли варианты для контроллера навигации?чтобы отобразить «большой заголовок» в открытой навигационной панели в верхнем регистре?
![enter image description here](https://i.stack.imgur.com/etF4W.png)
Теперь я использую пользовательский контроллер навигации:
class MyNavigationController: UINavigationController {
public var titleSaved: String?
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
guard let topItem = navigationBar.topItem else {
return
}
if navigationBar.frame.size.height > 60 {
topItem.title = topItem.title?.uppercased()
} else {
if let titleSaved = titleSaved {
topItem.title = titleSaved
} else {
topItem.title = topItem.title?.applyingTransform(StringTransform(rawValue: "Title"), reverse: false)
}
}
}
}
Установить заголовок из View Controlle:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.prefersLargeTitles = true
let title = "Sign In"
navigationItem.title = title
if let nc = navigationController as? MyNavigationController {
nc.titleSaved = title
}
}
}
это решение работает, но когда вы переключаетесь с "большого" заголовка на "маленькое" название и наоборот, оно дергается и выглядит довольно глючно