Размер заголовка панели навигации
Мне нужно изменить размер текста заголовка панели навигации для одного контроллера представления в моем приложении для iPhone. Я использую iOS5 и пробовал следующий код:
if ([self.tabBarItem respondsToSelector:@selector(setTitleTextAttributes:)]) {
NSLog(@"*** Support method(iOS 5): setTitleTextAttributes:");
[self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont,
[UIColor blackColor], UITextAttributeTextColor,
[UIColor grayColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeTextShadowOffset,
nil]];
}
Однако это относится только к tabBarItem.
Ответы
Ответ 1
Вам нужно захватить свойство панели навигации и использовать @property(nonatomic, copy) NSDictionary *titleTextAttributes
.
Для получения дополнительной информации см. Ссылка на класс UINavigationBar и Настройка раздела UINavigationBar.
Чтобы лучше понять ваш вопрос: какой тип контроллера у вас есть?
ИЗМЕНИТЬ
[self.navigationController.navigationBar setTitleTextAttributes:...];
если вы получаете доступ к navigationController
внутри нажатого контроллера.
[navigationController.navigationBar setTitleTextAttributes:...];
если navigationController
- ваш текущий UINavigationController
. Это можно использовать, например, если у вас есть следующий код:
UINavigationController* navigationController = ...;
[navigationController.navigationBar setTitleTextAttributes:...];
Ответ 2
Вы уже получили его, но вы также можете использовать следующие методы атрибутов.
Для цвета
NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor RedColor],UITextAttributeTextColor, nil];
self.navigationController.navigationBar.titleTextAttributes = attributes;
Для размера
NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],UITextAttributeFont, nil];
self.navigationController.navigationBar.titleTextAttributes = size;
Спасибо.
Для iOS 7 и выше
Для размера:
NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],NSFontAttributeName, nil];
self.navigationController.navigationBar.titleTextAttributes = size;
Ответ 3
Поскольку iOS7, я всегда делаю следующее:
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:18.0],NSFontAttributeName,
nil]];
Ключевое слово UITextAttributeFont
было нажато с iOS7, вы должны были заменить на
NSFontAttributeName
.
Вы можете использовать
[self.navigationController.navigationBar setTitleTextAttributes:]
, чтобы установить видимость навигации в качестве навигации, а [UINavigationBar appearance] setTitleTextAttributes:]
работает для всего вашего приложения напрямую. (Конечно, вам нужно поместить его в позицию свойства.)
Ответ 4
Swift 2.0:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().titleTextAttributes = [
NSFontAttributeName: UIFont(name: "DINNextLTW04-Regular", size: 20)!
]
return true
}
или
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBarHidden = false
self.title = "SAMPLE"
//Set Color
let attributes: AnyObject = [ NSForegroundColorAttributeName: UIColor.redColor()]
self.navigationController!.navigationBar.titleTextAttributes = attributes as? [String : AnyObject]
//Set Font Size
self.navigationController!.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Arial", size: 37.0)!];
}
Ответ 5
Мой пример
guard let sansLightFont = UIFont(name: "OpenSans", size: 20) else { return }
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName : sansLightFont]