我有一个UIButton
,它使用自定义字体,在我的视图加载时设置:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
我遇到的问题是字体似乎浮在中心线上。如果我注释掉这一行,默认字体会垂直居中显示。但是更改为自定义字体会破坏垂直对齐。
我在带有自定义字体的表格单元格上遇到了同样的问题。
我是否需要告诉视图某处自定义字体不像其他字体那么高?
编辑:我刚刚意识到我使用的字体是Windows TrueType字体。我可以在Mac上的TextEdit中使用它,只有我的应用程序中的对齐问题
答案 0 :(得分:300)
在Custom installed font not displayed correctly in UILabel讨论了类似的问题。没有解决方案。
这是适用于我的自定义字体的解决方案,在UILabel,UIButton等中存在相同的问题。事实上,字体的问题是它的上升属性与系统字体的值相比太小了。 Ascender是字体字符上方的垂直空格。要修复字体,您必须下载Apple Font Tool Suite命令行实用程序。然后取出你的字体并执行以下操作:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
这将创建Bold.hhea.xml
。使用文本编辑器打开它并增加ascender
属性的值。您将需要进行一些实验,以找出最适合您的确切值。在我的情况下,我将其从750更改为1200.然后使用以下命令行再次运行该实用程序,将您的更改合并回ttf文件:
~$ ftxdumperfuser -t hhea -A f Bold.ttf
然后在您的应用中使用生成的ttf字体。
OS X El Capitan
Apple Font Tool Suite安装程序由于SIP而无法在OSX El Capitan上运行,因为它试图将二进制文件安装到受保护的目录中。
您必须手动提取ftxdumperfuser
。首先将pkg从dmg复制到本地目录,然后用{/ 1>解压缩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/
,以便您可以使用以下内容在终端应用程序内的每个文件夹中使用它。
~$ mv ftxdumperfuser /usr/local/bin/
答案 1 :(得分:48)
我解决了调整顶部内容(不是标题!)的问题。
例如:button.contentEdgeInsets = UIEdgeInsetsMake(10.0,0.0,0.0,0.0);
祝你好运!答案 2 :(得分:6)
我认为this is the best answer. 没有玩ascender,numberOfHMetrics等...... 只需Glyphs应用程序导入导出 并完成了工作。 感谢这个答案: https://stackoverflow.com/a/16798036/1207684
答案 3 :(得分:5)
不确定这是否有用,因为它可能取决于您的字体,但可能是您的基线未对齐。
self.searchButton.titleLabel.baselineAdjustment =
UIBaselineAdjustmentAlignCenters;
答案 4 :(得分:2)
您可以在Interface Builder中尝试这一点。以下是如何操作的快照 -
正如你所看到的,尝试在IB中做这件事有其自身的好处。
答案 5 :(得分:2)
晚些时候参加聚会,但是由于这个问题已是第N次出现,我认为我应该发布找到的最简单的解决方案:使用Python FontTools。
如果您的系统上没有Python 3,请安装它。
安装FontTools
pip3 install fonttools
FontTools包括一个TTX工具,该工具可以与XML进行相互转换。
在同一文件夹中将字体转换为.ttx
ttx myFontFile.otf
对.ttx进行必要的编辑,然后删除.otf文件,因为该文件将在下一步中被替换。
将文件转换回.otf
ttx myFontFile.ttx
ftxdumperfuser
也会在10.15.2 Catalina上导致错误。
答案 6 :(得分:0)
注意:显然有一个比这更好的答案(上面有数百票的票数)
除了编辑字体文件外,我找不到真正的答案。我不知道怎么做,也没有时间,所以我只是把我的照片缩小了,调整细胞使它看起来像是正确对齐的。
我认为这是一个肮脏的小黑客,但它有效,而且很好。
这是导致问题的唯一字体,因此问题必须与字体文件有关。
实际上并不是我的结论,这是另一个SO帖子,但我无法在任何地方找到它,如果我再次遇到它,我会把它贴在评论中。