UINavigationBar的标题

问题描述:

我想使用一个UILabel在UINavigationBar的更换标题,代码如下: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 = @“称号”,但它总是显示它有:

enter image description here

如果我不self.title =零,那么一切都过去了......如何消除这个神秘的标题来自导航栏,并使用我创建的UILabel。而不是增加您的标签作为一个子视图

为什么你不只是做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]; 
+0

一切都没有出现,当我做到这一点...超级怪异 – adit 2011-05-08 18:37:38

+0

那是因为你设置nav_title.text =标题,然后设置标题= @“” – 2011-05-08 19:31:43

+0

所以我所做的就是添加的UILabel作为一个子视图然后做self.title = @“”,然后在viewWillDisapper里面,我从superView中移除标签..有没有比这更有效的方法? – adit 2011-05-08 20:24:12

使用self.navigationItem.titleView = nav_title;

+0

的问题是,你能不能与adjustsFontSizeToFitWidth。 起初我用,但我被扰乱....文本时长 – adit 2011-05-08 17:25:28

+0

也许包裹标签在一个普通的UIView,让外观图做自动尺寸和具有内标签调整其字体。 – 2011-05-08 18:13:37

+1

介绍Evadne Wu的例子吗? – adit 2011-05-08 18:37:55

使用此:

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..!