1

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

我正在使用导航栏标题的字体,这是发生了什么:

导航栏坏了

您可以看到字体距离基线太高,这就是发生剪裁的原因。

我设法找到了一个几乎合适的解决方案,用 UILabel 替换标准的导航栏标题,将其插入到导航栏的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];

之所以可行,是因为我将标签设置为应有的高度的两倍,从而使文本完全进入视野。

部分解决方案

不过,问题在于它现在位置太低了(在导航栏之外。如下所示......

越界

我想不出解决这个问题的方法,甚至想不出另一种解决方法。我尝试过覆盖框架原点高度,但这无济于事。

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

4

2 回答 2

2

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

于 2012-08-21T12:45:25.940 回答
0

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

除此之外,您是否尝试安装字体并通过情节提要选择它?

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

此外,您可能可以在这里使用一些东西:如何以编程方式将 UIButton 调整为文本大小并保持漂亮的填充?

于 2012-08-21T11:03:41.647 回答