UIButton自定义字体垂直alignment

我有一个使用自定义字体的UIButton ,在我的视图加载时设置:

 - (void)viewDidLoad { [super viewDidLoad]; self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ]; } 

我得到的问题是,字体似乎上浮的中心线。 如果我注释掉这一行,默认的字体出现垂直居中的罚款。 但改为自定义字体打破了垂直alignment。

我也得到一个自定义字体的表格单元相同的问题。

我是否需要将视图告诉某处自定义字体不像其他字体那么高?

编辑:我刚刚意识到,我正在使用的字体是Windows TrueType字体。 我可以在Mac上的TextEdit中使用它,只有在我的应用程序alignment的问题

按钮文字不是垂直居中

自定义安装的字体在UILabel中没有正确显示,也讨论了类似的问题。 没有给出解决scheme。

这里的解决scheme适用于我的自定义字体在UILabel,UIButton等有相同的问题。 与字体的问题原来是它的上行属性相比系统字体的值太小。 Ascender是字体字符上方的垂直空格。 要修复你的字体,你将不得不下载苹果字体工具包命令行工具。 然后采取您的字体,并执行以下操作:

 ~$ ftxdumperfuser -t hhea -A d Bold.ttf 

这将创buildBold.hhea.xml 。 用文本编辑器打开它,并增加ascender属性的值。 你将不得不尝试一下,找出最适合你的确切值。 在我的情况下,我将其从750更改为1200.然后使用以下命令行再次运行该实用程序将您的更改合并到ttf文件中:

 ~$ ftxdumperfuser -t hhea -A f Bold.ttf 

然后在您的应用程序中使用生成的ttf字体。

OS X El Capitan

由于SIP试图将二进制文件安装到受保护的目录中,因此Apple字体工具套件安装程序不再适用于OSX El Capitan。 您必须手动提取ftxdumperfuser 。 首先将OS X Font Tools.pkg的pkg复制到本地目录,然后使用下列命令将OS X Font Tools.pkg解包

 ~$ xar -xf OS\ X\ Font\ Tools.pkg 

现在导航到文件夹fontTools.pkg

 ~$ cd fontTools.pkg/ 

提取有效载荷

 ~$ cat Payload | gunzip -dc | cpio -i 

现在, ftxdumperfuser二进制文件位于当前文件夹中。 您可以将其移动到/usr/local/bin/以便您可以在terminal应用程序的每个文件夹中使用它,并使用以下命令。

 ~$ mv ftxdumperfuser /usr/local/bin/ 

我解决了调整顶部内容(不是标题!)插入的问题。

例如:button.contentEdgeInsets = UIEdgeInsetsMake(10.0,0.0,0.0,0.0);

祝你好运!

不知道这是否会有所帮助,因为它可能取决于您的字体,但可能是您的基准线没有alignment。

 self.searchButton.titleLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 

我认为这是最好的答案。 没有玩ascender,numberOfHMetrics等…只是import出口字形应用程序和工作完成。 感谢这个答案: https : //stackoverflow.com/a/16798036/1207684

你可以在Interface Builder中试试这个。 这里是如何做到这一点的快照 –

在这里输入图像说明在这里输入图像说明

正如你所看到的,在IB中尝试这样做有其自身的好处。

所以没有真正的答案,除了编辑字体文件。 我不知道该怎么做,也没有时间,所以我只是把我的照片缩小了一些,并调整了单元格,使它看上去像是正确alignment的。

我猜想一个肮脏的小黑客,但它的工作,这很好。

这是导致问题的唯一字体,所以问题必须与字体文件。

实际上我并没有这样做,这是另一个SO的post,但我找不到它,如果我再次遇到它,我会坚持在评论中。