ios UIButton自定义字体垂直对齐

mkh04yzy  于 2023-04-22  发布在  iOS
关注(0)|答案(7)|浏览(161)

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

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

我遇到的问题是字体看起来浮在中心线上。如果我注解掉这一行,默认字体看起来垂直居中。但是更改为自定义字体会破坏垂直对齐。
我也在一个自定义字体的表格单元格上遇到了同样的问题。
我是否需要在某个地方告诉视图自定义字体没有其他字体那么高?
编辑:我刚刚意识到我使用的字体是Windows TrueType字体,我可以在Mac上的TextEdit中使用它,只是在我的应用程序中对齐有问题

8yparm6h

8yparm6h1#

Custom installed font not displayed correctly in UILabel上讨论了一个类似的问题。没有给出解决方案。
这是我的自定义字体的解决方案,它在UILabel中有同样的问题,UIButton等。字体的问题原来是它的ascender属性与系统字体的值相比太小了。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
由于SIP,Apple Font Tool Suite Installer在OSX El Capitan上不再工作,因为它试图将二进制文件安装到受保护的目录中。您必须手动解压缩ftxdumperfuser。首先将pkg从dmg复制到本地目录,然后使用

~$ 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/
093gszye

093gszye2#

我解决了调整顶部内容(不是标题!)插图的问题。
例如:button.contentEdgeInsets = UIEdgeInsetsMake(10.0,0.0,0.0,0.0);
祝你好运!

tzcvj98z

tzcvj98z3#

不确定这是否会有帮助,因为它可能取决于你的字体,但它可能是你的基线不对齐。

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;
ztyzrc3y

ztyzrc3y4#

我认为this is the best answer.没有玩上升器,numberOfHMetrics等...只是通过Glyphs应用程序导入导出并完成工作.感谢这个答案:https://stackoverflow.com/a/16798036/1207684

f2uvfpb9

f2uvfpb95#

迟到了,但当这个问题第N次击中我时,我想我会发布我找到的最简单的解决方案:使用Python FontTools
1.如果您的系统上没有Python 3,请安装它。
1.安装FontTools
pip3 install fonttools
FontTools包含一个TTX工具,它支持XML之间的转换。
1.在同一文件夹中将字体转换为.ttx
ttx myFontFile.otf
1.对.ttx进行必要的编辑并删除.otf文件,因为它将在下一步中被替换。
1.将文件转换回.otf
ttx myFontFile.ttx

动机:solution by kolyuchi不完整,即使使用此扩展安装流程,在10.15.2 Catalina 上运行ftxdumperfuser也会导致错误。

oxosxuxt

oxosxuxt6#

你可以在界面生成器中尝试一下。下面是如何做到这一点的快照-

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

cetgtptt

cetgtptt7#

otf切换到ttf版本的字体可能是解决此问题的一种方法,具体取决于字体。

相关问题