navigationBar标题中的字体截止

时间:2012-08-21 10:57:31

标签: objective-c ios ios5

我正在开发一个使用自定义字体的应用,但我遇到了一些不寻常的剪辑。我认为问题在于字体本身,但我无法解决这个问题,因此我需要提出一个解决方案,在应用程序中解决它。

我正在使用navigationBar标题的字体,这是正在发生的事情:

NavBar Broken

您可以看到字体从基线开始位置太高,这就是发生裁剪的原因。

我设法找到一个几乎合适的解决方案,用UILabel替换标准的navigationBar标题,将其插入到navigationBar的titleView

    UILabel *navTitle = [[UILabel alloc] init];
    navTitle.frame = CGRectMake(0,0,190,40);
    navTitle.text = @"My Title Text";
    navTitle.font = [UIFont fontWithName:AGENDA_TYPE_FONT size:17];
    navTitle.backgroundColor = [UIColor clearColor];
    navTitle.textColor = [UIColor colorWithHue:0.356 saturation:0.457 brightness:0.288 alpha:1.00];
    navTitle.shadowColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.50];
    navTitle.shadowOffset = CGSizeMake(0, 1);
    navTitle.textAlignment = UITextAlignmentCenter;

    // Set label as titleView
    self.navigationItem.titleView = navTitle;

    // Shift the title down a bit...
    [self.navigationController.navigationBar setTitleVerticalPositionAdjustment:9 forBarMetrics:UIBarMetricsDefault];

这是有效的,因为我已经将标签的高度设置为它应该是的两倍,这使文本完全可以看到。

Partial Solution

这个问题虽然它现在太低了(在navigationBar之外。如下所示......

Out of bounds

我想不出办法解决这个问题,甚至是另一种解决方法。我已经尝试覆盖帧原点高度,但这没有任何作用。

有人可以提供任何帮助吗?

2 个答案:

答案 0 :(得分:2)

创建一个与标签宽度相同的容器UIView,但不高于UINavigationBar(46像素?) - 让我们说它高36点。将此容器视图上的“clipsToBounds”设置为YES。现在将标签添加到此容器视图中,并使容器视图为titleView。

答案 1 :(得分:0)

你是故事板吗?您可以调整导航标题的基线对齐方式。

除此之外,您是否尝试安装字体并通过故事板选择它?

如果这不起作用我认为您的字体可能有问题 - 您可以尝试设置一个带有div的快速html页面,看看它是否与字体有关。

此外,您可以在此处使用:How to programmatically resize an UIButton to the text size and keep a nice padding?

相关问题