Верхняя строка для всех заголовков UINavigation
В настоящее время я изменяю шрифт панели навигации, используя следующее в AppDelegate
:
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"..." size:...], NSFontAttributeName,
nil]];
Есть ли способ сделать то же самое, чтобы убедиться, что строка капитализируется глобально?
Ответы
Ответ 1
Вы можете создать базу UIViewController
, которая скрывает исходную навигационную панель и добавляет новую.
self.navigationController.navigationBarHidden = YES;
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:frame];
UINavigationItem *naviItem = [[UINavigationItem alloc] init];
self.titleLabel = [UILabel new];
naviItem.titleView = self.titleLabel;
navigationBar.items = [NSArray arrayWithObjects:naviItem, nil];
[self.view addSubview:navigationBar];
Затем вы можете управлять настройкой заголовка для titleLabel.
Ответ 2
Это невозможно сделать с помощью NSAttributedString, но вместо этого вы можете изменить заголовок в вашем классе контроллера базового представления. Попробуй это:
/// Base class for all view controllers
class BaseViewController: UIViewController {
private var firstWillAppearOccured = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if !firstWillAppearOccured {
viewWillFirstAppear(animated)
firstWillAppearOccured = true
}
}
/// Method is called when 'viewWillAppear(_:)' is called for the first time
func viewWillFirstAppear(_ animated: Bool) {
title = title?.uppercased() // Note that title is not available in viewDidLoad()
}
}