自定义字体不以大写字母显示分音符

时间:2013-06-12 11:07:23

标签: iphone ios objective-c uibutton custom-font

我有一个使用自定义字体的UIButton子类。问题是大写字母不显示分音符。

下面是包含和不包含自定义字体的相同按钮示例的图像。我将标题的背景颜色设置为红色以查看正在发生的事情。

没有自定义字体

without custom font

使用自定义字体

with custom font

我的UIButton子类会覆盖awakeFromNib

- (void)awakeFromNib
{
    [super awakeFromNib];
    UIFont *font = [UIFont fontWithName:@"TitilliumText22L-Bold" size:self.titleLabel.font.pointSize];
    self.titleLabel.font = font;
}

有谁可以告诉我该做什么才能在大写字母上显示分音符?

感谢。

5 个答案:

答案 0 :(得分:4)

我通过对Bob分享的问题的答案解决了这个问题 https://stackoverflow.com/a/8314197/617787

唯一要注意这个解决方案(更改字体文件的“ascender”)是使用此修改后的字体的多行UILabel上的行之间的空间也会改变,因此您可以使用NSAttributedString来修改它每个案例。

答案 1 :(得分:1)

我用土耳其语字符对此做了一些测试,看结果:

3 Buttons and 1 UILabel with NeoSansPro font and capital TR chars

  1. UILabels正确显示大写字母。
  2. 带有helvetica字体的UIButton正确显示字符(第三个按钮),但NeoSansPro系列的所有成员都会出现问题。
  3. 问题仅发生在标题标签(按钮2)
  4. 的顶行

    解决方案:

    1. 设置标题标签的行数:0
    2. 设置标题“\ nBUTTON TITLE”,而不是“BUTTON TITLE”
    3. 在IB或代码中,播放内容和标题对齐,直到标题正确显示。如果你想把它放在中间,你应该把标题向上推。

答案 2 :(得分:1)

简单,最佳的解决方案。

  1. 在界面中选择按钮
  2. 在属性检查器中,如图所示更改垂直对齐方式。

答案 3 :(得分:0)

似乎是在剪切文本时,尝试减小字体大小或更改titleLable的框架(UIButton的属性)

答案 4 :(得分:0)

我有一个类似的问题,在标题标签的顶部切断了分音符。 我创建了一个UIButton子类并使用此代码来解决问题:

-(void)layoutSubviews
{
    [super layoutSubviews];

    CGRect frame = self.titleLabel.frame;
    frame.size.height = self.bounds.size.height;
    frame.origin.y = self.titleEdgeInsets.top;
    self.titleLabel.frame = frame;
}