UINavigationBar自定义字体

时间:2012-02-14 16:56:02

标签: iphone objective-c ios

我为导航item.titleview

分配了一个标签

问题是如果我使用系统字体,那么标签在导航栏上居中,但如果我使用自定义字体则不是。

enter image description here

6 个答案:

答案 0 :(得分:2)

有一种方法可以在不添加自定义标签的情况下解决此问题。通过从self.title方法设置viewDidLoad,titleLabel将调整大小。但是,您需要使用故事板中定义的其他标题。当标签的内容没有改变时,它不会调用sizeToFit(这对我而言是合理的)。

答案 1 :(得分:1)

这是一个已知的错误,但你可以通过以下方式规避它:

// 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];
}

应该这样做, 快乐的编码!

答案 2 :(得分:0)

这看起来像个错误,所以请在https://bugreport.apple.com提交报告。包含您生成这些屏幕截图的代码将非常非常有用。

与此同时,您可以尝试通过相应titleView的{​​{1}}属性自行定位标签。

答案 3 :(得分:0)

导航栏根据标签的框架大小对标签进行居中。如果您使标签的框架大于必要的大小或在可见文本后面添加了额外的空格,则它将显示在偏离中心的位置。

要使标签与文本一样大,请将sizeToFit消息发送到标签。或者,如果您在笔尖中创建了标签,请选择标签并选择编辑器>从菜单栏中调整内容的大小。

您还可以将标签的textAlignment属性设置为UITextAlignmentCenter

在此测试项目:http://dl.dropbox.com/u/26919672/navbartitleview.zip

答案 4 :(得分:0)

以上三个答案都很有用..

总结一下:

  1. 从上面的答案中......我也可以说这是一个错误
  2. @ Dave Delong ..我尝试通过titleView来更新它的框架..仅仅是origin.x而宽度有效..值不是。
  3. @ rob mayoff 我的第一个代码包括size to fit它没有用...然后我尝试了很多东西......制作一个按钮并设置其标题..等等这个bug仍然存在。
  4. @rinzler 我试过了..对我来说没用。但我的字体仍然存在...可能对别人有用..
  5. 所以解决方案对我来说很简单..因为我的导航栏标题没有改变..我只是用文本图像替换它。

    使用

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

    这对那些标题发生变化的人不起作用。谢谢大家..

答案 5 :(得分:0)

假设您支持iOS 5+,那么您希望使用[UINavigationBar appearance]方法设置自定义标题字体,条形按钮字体,条形按钮图像等。

在这里阅读更多内容: http://www.raywenderlich.com/21703/user-interface-customization-in-ios-6