2014-02-21 2 views
1

Как мне получить UIFont титула в UINavigationController? Я попытался прочесть его так:Как читать шрифт заголовка в UINavigationController?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.title = @"Some text here"; 
} 

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSLog(@"navigation bar title attributes = %@", self.navigationController.navigationBar.titleTextAttributes); 
    NSLog(@"title font = %@", [self.navigationController.navigationBar.titleTextAttributes objectForKey:UITextAttributeFont]); 
} 

Выход был разочаровывающим. Словарь titleTextAttributes содержал только один ключ/значение, которое не было шрифтом.

navigation bar title attributes = { 
    NSColor = "UIDeviceWhiteColorSpace 1 1"; 
} 
title font = (null) 

ответ

2

Вы можете получить доступ к подвидам навигационной панели, чтобы получить titlelable и получить шрифт

for (UIView *sv in self.navigationController.navigationBar.subviews) 
{ 
    if (sv.subviews.count > 0 && [sv.subviews[0] isKindOfClass:[UILabel class]]) 
    { 
     UILabel *lbl = (UILabel *)sv.subviews[0]; 
     NSLog(@"%@",lbl.font); 
     break; 
    } 
} 

вывода консоли

<UICTFont: 0xd8a3e50> font-family: "Helvetica-Light"; font-weight: normal; font-style: normal; font-size: 16.00pt 
+3

Имейте в виду, что такой код является хрупким и может сломаться после обновления iOS. – rmaddy

+0

yaa @rmaddy Я знаю, что это слишком плохо для просмотра в подземельях. –

2

Вы на правильном пути. Но имейте в виду, что используется шрифт по умолчанию, если шрифт не установлен для определенного UINavigationBar или через прокси UIAppearance.

Чтобы определить шрифт по умолчанию, если вы не нашли его, используйте методы класса UIFontsystemFontOfSize: и systemFontSize.

+1

Документацию для 'systemFontSize' говорит * Возвращает размер стандартного системного шрифта . * Как может быть стандартный размер, когда размеры текста различаются в разных представлениях? – Pwner

+0

Это хороший вопрос. Посмотрите, дает ли он правильный результат или нет. – rmaddy

Смежные вопросы