Пользовательский шрифт UINavigation Bar - PullRequest
0 голосов
/ 14 февраля 2012

Я присвоил метку своему элементу навигации.*

enter image description here

Ответы [ 6 ]

2 голосов
/ 17 февраля 2013

Существует способ обойти это без добавления пользовательской метки.Установив self.title из метода viewDidLoad, titleLabel изменит размер.Однако вам нужно использовать другой заголовок, чем тот, который определен в вашей раскадровке.Он не будет вызывать sizeToFit, когда содержимое метки не изменится (что звучит логично для меня).

1 голос
/ 14 февраля 2012

Это известная ошибка, НО вы можете обойти ее следующим образом:

// adds a custom title label to the view
-(void)addNavBarTitle:(NSString*)titleText
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 360, 30)];     //  NOTE: YOU CAN ADD PADDING TO THE LABEL BY CHANGING ITS Y ORIGIN
    [label setFont:[UIFont fontWithName:@"Arial-BoldMT" size:14]];                  // Use custom font if needed
    [label setBackgroundColor:[UIColor clearColor]];
    [label setTextColor:[UIColor whiteColor]];
    [label setText:titleText];                                                      // Dynamically change title. Else just explicitly set the string here
    label.textAlignment = UITextAlignmentCenter;
    [self.navigationController.navigationBar.topItem setTitleView:label];
    [label release];
}

Это должно сработать, Удачного кодирования!

0 голосов
/ 09 июля 2013

Если вы поддерживаете iOS 5+, то вы хотите использовать метод [UINavigationBar appearance] для установки пользовательских шрифтов заголовков, шрифтов кнопок панели, изображений кнопок панели и т. Д.

Подробнее читайте здесь: http://www.raywenderlich.com/21703/user-interface-customization-in-ios-6

0 голосов
/ 14 февраля 2012

Все три приведенных выше ответа полезны ..

Подводя итог:

  1. Из приведенных выше ответов .. Я тоже могу сказать, что это ошибка
  2. @ Дейв Делонг .. я пытался обновить его кадр с помощью titleView ..only origin.x и ширина имела эффект .. у значений не было.
  3. @ robmayoff мой первый код включает size to fit это не сработало ... потом я попробовал много вещей ... сделал кнопку и установил ее название ... и т.д ... все еще ошибка сохраняется.
  4. @ rinzler я пытался, что .. у меня не получалось. Баг все еще был там с моим шрифтом ... может работать у кого-то еще ..

Так что решение было простыммне достаточно .. так как заголовок моей навигационной панели не меняется .. я просто заменил его на текстовое изображение.

с использованием

UIImageView *TitleImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MyImage.png"]];
self.navigationItem.titleView = TitleImage;  
[TitleImage release];

это не будет работать для тех, чей заголовок изменяется.. Спасибо всем ..

0 голосов
/ 14 февраля 2012

Панель навигации центрирует метку в зависимости от размера кадра. Если вы сделали рамку надписи больше необходимого или добавили лишний пробел после видимого текста, он будет смещен от центра.

Чтобы сделать метку настолько большой, насколько это необходимо для ее текста, отправьте сообщение sizeToFit на метку. Или, если вы создали метку в перо, выберите метку и выберите «Редактор»> «Размер, чтобы подогнать содержимое» в строке меню.

Также можно установить для свойства textAlignment метки значение UITextAlignmentCenter.

Тестовый проект здесь: http://dl.dropbox.com/u/26919672/navbartitleview.zip

0 голосов
/ 14 февраля 2012

Это похоже на ошибку, поэтому, пожалуйста, отправьте отчет на https://bugreport.apple.com. Включая код, из которого вы создали эти скриншоты, будет чрезвычайно полезным.

А пока, вы можете попробовать позиционировать метку самостоятельно через свойство titleView соответствующего UINavigationItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...