1

我在更改导航控制器中标题的字体时遇到问题。

这是我的代码(来自我的 UINavigationController 子类):

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSDictionary * attributes = @{UITextAttributeTextColor  :[UIColor whiteColor],
                                  UITextAttributeFont       :[UIFont fontWithName:@"Blanch" size:50],
                                  };
    self.navigationBar.titleTextAttributes  = attributes;
    CGFloat verticalOffset = -8;
    [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];

    UIImage *image = [UIImage imageNamed:NAVBAR_IMAGE];
    [self.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}

这是它的样子:

在此处输入图像描述

如果我注释掉设置字体的行,这就是它的样子(正如垂直偏移所预期的那样):

在此处输入图像描述

存在垂直偏移的唯一原因是我认为它可能已经解决了问题。我不需要它,它现在已被注释掉,但它不会改变输出 - 它看起来仍然相同,只是在 NavBar 上更低。

任何想法如何解决这个问题?我认为可能是自定义字体有很多行距,我想这可能是问题所在。

我一直在尝试找到一种方法来更改标题的原点/高度/基线对齐方式,但看不到任何方法。知道如何解决这个问题吗?

4

2 回答 2

0

创建一个UIView与标签宽度相同且高度为UINavigationBar(大约 46 像素?)的容器。将此容器视图设置clipsToBounds为 YES。现在将您的标签添加到此容器视图,并使容器视图成为 titleView。

于 2013-06-26T09:39:57.030 回答
0

为 ios5 设置导航栏图像

if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"YOUR_NAVIGATION_BAR_IMAGE"] forBarMetrics:UIBarMetricsDefault];
}

为 ios6 设置导航栏图像

if([[UINavigationBar appearance] respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"YOUR_NAVIGATION_BAR_IMAGE"] forBarMetrics:UIBarMetricsDefault];

之后,在导航栏中心的中心创建标签并使用您的标题。

于 2013-06-26T13:37:49.533 回答