Изменение шрифта панели навигации
вопрос простой и простой, ответ, К сожалению, нет.
Как вы можете изменить шрифт текста в UINavigationBar
?
7 ответов:
из iOS 7 и более поздних версий:
NSShadow* shadow = [NSShadow new]; shadow.shadowOffset = CGSizeMake(0.0f, 1.0f); shadow.shadowColor = [UIColor redColor]; [[UINavigationBar appearance] setTitleTextAttributes: @{ NSForegroundColorAttributeName: [UIColor greenColor], NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:20.0f], NSShadowAttributeName: shadow }];
из iOS 5 и более поздних версий:
[[UINavigationBar appearance] setTitleTextAttributes: @{ UITextAttributeTextColor: [UIColor greenColor], UITextAttributeTextShadowColor: [UIColor redColor], UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeFont: [UIFont fontWithName:@"Helvetica" size:20.0f] }];
раньше, чем iOS 5:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)]; label.backgroundColor = [UIColor clearColor]; label.font = [UIFont boldSystemFontOfSize:20.0]; label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]; label.textAlignment = UITextAlignmentCenter; label.textColor =[UIColor whiteColor]; label.text=self.title; self.navigationItem.titleView = label; [label release];
Если вы хотите изменить шрифт в самом Построителе интерфейса (без какого-либо кода) вот способ сделать это в Xcode6:
1.) Найдите вид панели навигации под сценой навигационного контроллера
2.) Измените атрибуты шрифта заголовка, цвета и тени в Инспекторе атрибутов.
выше ответ работает. Я бы добавил следующую строку перед последней строкой. Если я этого не делаю, кажется, что метка выровнена по центру неправильно, если есть кнопка "назад" с левой стороны, но нет правой кнопки.
... [self.navigationItem.titleView sizeToFit]; [label release]; // not needed if you are using ARC
обновлено для iOS 7:
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName, shadow, NSShadowAttributeName, [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];
вежливость:
http://www.appcoda.com/customize-navigation-status-bar-ios-7/
не уверен, почему все ответы включали тень. Добавление линий, которые управляют тенью, ничего не делает в отношении изменения шрифта текста. Эти 2 строки кода будут работать для iOS 8.4 и Swift
let attributesDictionary = [NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 14)!] navigationController!.navigationBar.titleTextAttributes = attributesDictionary
The
titleTextAttributes
сохраняет словарь, который будет диктовать шрифт, цвет, размер и другие атрибуты заголовка панели навигации.
начиная с iOS 5 Вы можете использовать внешний прокси.
ответ находится в дубликате этого вопроса:https://stackoverflow.com/a/12364740/883413
NSShadow *shadow = [NSShadow new]; [shadow setShadowColor: [UIColor clearColor]]; [shadow setShadowOffset: CGSizeMake(0.0f, 1.0f)]; [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"TimeBurner" size:27.0f], NSFontAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, shadow, NSShadowAttributeName,nil]];