在一个UITableViewController

问题描述:

我对iphone /目标c在一个UITableViewController

各种UIViewControllers内的推入视图一个简单的导航基于应用设置的字体和标题栏文本的字体大小,我可以设置在文本使用标题栏类似

self.title = @"blah blah blah" 

有没有办法来控制字体字体大小在标题栏文字标题的

谢谢!

您可以将任何UIView分配给navcontroller的标题区域。

创建一个UILabel,然后设置其字体和大小,然后将其分配给UIViewController的navigationItem.titleView属性。确保UILabel的backgroundColor设置为clearColor。

这只适用于顶级导航视图。当用户向下钻入视图控制器层次结构并显示“后退”按钮时,备用titleView将被忽略,并显示常规文本标签。

+0

是否有任何方法来设置*钻取*标题栏的字体大小等? – user141146 2009-10-09 21:45:21

+0

官方文档声称,下钻titleview会被忽略(大概是因为他们希望用户在下一级的“后退”按钮中显示文本之前看到文本)。但是,您总是可以尝试覆盖viewDidLoad并递归扫描NavBar的视图层次结构,直到找到合适的UILabel,然后在其上设置字体。 – Ramin 2009-10-10 00:00:01

调整大小navcontroller的标题文本的正确方法是设置的navigationItem

这样的titleview的属性(在viewDidLoad中)

UILabel* tlabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 300, 40)]; 
     tlabel.text=self.navigationItem.title; 
    tlabel.textColor=[UIColor whiteColor]; 
    tlabel.backgroundColor =[UIColor clearColor]; 
    tlabel.adjustsFontSizeToFitWidth=YES; 
    self.navigationItem.titleView=tlabel; 

您可能需要压印标签,以便看起来不模糊和平坦:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect frame = CGRectMake(0, 0, 400, 44); 
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont boldSystemFontOfSize:18.0]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.text = self.navigationItem.title; 
    // emboss so that the label looks OK 
    [label setShadowColor:[UIColor darkGrayColor]]; 
    [label setShadowOffset:CGSizeMake(0, -0.5)]; 
    self.navigationItem.titleView = label; 
} 
+0

也做了很好的添加textAlignment – 2012-04-23 12:24:42

+0

我不知道什么FontHelper是,所以我用:'label.font = [UIFont boldSystemFontOfSize:18.0];'这似乎很接近导航栏标题的原始字体。 – Ginny 2012-07-13 14:58:03

+0

@Ginny - 对不起,我没有注意到我留在了自己的FontHelper类中! – 2012-07-14 04:57:33

如果你想这个工作在iphone和ipad上,也想获得标题居中然后使用下面的代码。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UILabel* label=[[UILabel alloc] initWithFrame:CGRectMake(0,0, self.navigationItem.titleView.frame.size.width, 40)]; 
    label.text=self.navigationItem.title; 
    label.textColor=[UIColor whiteColor]; 
    label.backgroundColor =[UIColor clearColor]; 
    label.adjustsFontSizeToFitWidth=YES; 
    label.font = [AppHelper titleFont]; 
    label.textAlignment = NSTextAlignmentCenter; 
    self.navigationItem.titleView=label; 
}