Заголовок UINavigationBar

Я пытаюсь использовать UILabel для замены заголовка в UINavigationBar, код выглядит следующим образом:

UINavigationBar *bar = [self.navigationController navigationBar];
    [bar setBackgroundColor:[UIColor blackColor]];

    UILabel * nav_title = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 220, 25)];
    nav_title.font = [UIFont fontWithName:@"Arial-BoldMT" size:18];
    nav_title.textColor = [UIColor whiteColor];
    nav_title.adjustsFontSizeToFitWidth = YES;
    nav_title.text = title;
    nav_title.backgroundColor = [UIColor clearColor];
    [bar addSubview:nav_title];
    [nav_title release];

Проблема в том, как мне удалить исходный заголовок панели? Я не объявлял self.title = @ "title", но он всегда показывает это там:

введите описание изображения здесь

Если я сделаю self.title = nil, то все пропадет ... Как удалить этот загадочный заголовок с навигационной панели и просто использовать созданный мной UILabel.


person adit    schedule 08.05.2011    source источник


Ответы (3)


Почему бы тебе просто не сделать self.title = @ ""?

РЕДАКТИРОВАТЬ: Попробуйте это?

UINavigationBar *bar = [self.navigationController navigationBar];
[bar setBackgroundColor:[UIColor blackColor]];

UILabel * nav_title = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 220, 25)];
nav_title.font = [UIFont fontWithName:@"Arial-BoldMT" size:18];
nav_title.textColor = [UIColor whiteColor];
nav_title.adjustsFontSizeToFitWidth = YES;
nav_title.text = title;
self.title = @"";
nav_title.backgroundColor = [UIColor clearColor];
[bar addSubview:nav_title];
[nav_title release];
person shabbirv    schedule 08.05.2011
comment
это потому, что вы устанавливаете nav_title.text = title, а затем устанавливаете title = @ - person Drew C; 08.05.2011
comment
так что я добавил UILabel в качестве subview, затем сделал self.title = @ и затем внутри viewWillDisapper я удалил метку из superView .. Есть ли способ лучше, чем этот? - person adit; 09.05.2011
comment
@shabzco, 220x25 - это размер метки по умолчанию для панели навигации? - person Zubair; 04.03.2014

Используйте self.navigationItem.titleView = nav_title; вместо добавления своего ярлыка в качестве подпредставления.

person Drew C    schedule 08.05.2011
comment
проблема в том, что вы не можете с этим настроить AdjustFontSizeToFitWidth. Изначально я использовал это, но меня беспокоило ...., когда текст длинный - person adit; 08.05.2011
comment
Может быть, оберните метку в обычный UIView, позвольте внешнему виду автоматически изменить размер, а внутренняя метка изменит размер своего шрифта. - person Evadne Wu; 08.05.2011

Используйте это:

  UILabel *label = [[UILabel alloc]init];
  [label setBackgroundColor:[UIColor clearColor]];
  [label setTextColor:[UIColor whiteColor]];
  [label setText:self.title];
  label.adjustsFontSizeToFitWidth=YES;
  label.lineBreakMode=UILineBreakModeWordWrap;
  label.numberOfLines=0;
  [label setFont:[UIFont boldSystemFontOfSize:16.0]];
  [self.navigationController.navigationBar.topItem setTitleView:label];
  [label release];

Hope this will help u..!
person Warewolf    schedule 16.04.2012