I know that you can set the font, color, font size separately for "big" and "small" headers when using prefersLargeTitles.
But is it possible, with the "LargeTitles" on the navigation controller, to ensure that the "big header" on the "expanded" navigation bar is shown in uppercase characters?
Those. to achieve this effect:
Now for this purpose I use custom Navigation Controller:
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) } } } } setting the title from the View Controller:
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 } } } This solution works, but when you go from the “big” heading to the “small” one and back, it twitches a bit - it doesn't look very nice ...

