繁体   English   中英

UIButton 自定义字体垂直对齐

[英]UIButton custom font vertical alignment

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

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

我遇到的问题是字体似乎漂浮在中心线上。 如果我注释掉这一行,默认字体会很好地垂直居中显示。 但是更改为自定义字体会破坏垂直对齐。

我在带有自定义字体的表格单元格上也遇到了同样的问题。

我是否需要在某处告诉视图自定义字体不如其他字体高?

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

按钮文本不垂直居中

在 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 安装程序不再在 OSX El Capitan 上工作,因为它试图将二进制文件安装到受保护的目录中。 您必须手动提取ftxdumperfuser 首先将 pkg 从 dmg 复制到本地目录,然后解压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/

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

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

祝你好运!

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

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;

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

聚会迟到了,但是当这个问题第 N 次袭击我时,我想我会发布我找到的最简单的解决方案:使用Python FontTools

  1. 如果 Python 3 在您的系统上不可用,请安装它。

  2. 安装字体工具

    pip3 install fonttools

    FontTools包含一个 TTX 工具,可以实现与 XML 的转换。

  3. 在同一文件夹中将您的字体转换为 .ttx

    ttx myFontFile.otf

  4. 对 .ttx 进行必要的编辑并删除 .otf 文件,因为这将在下一步中替换。

  5. 将文件转换回 .otf

    ttx myFontFile.ttx


动机: kolyuchi解决方案是不完整的,即使有这个扩展的安装流程,在 10.15.2 Catalina 上运行ftxdumperfuser导致错误。

您可以在 Interface Builder 中尝试一下。 这是如何做到这一点的快照 -

在此处输入图片说明在此处输入图片说明

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

注意:显然有一个比这更好的答案(上面有数百票的票数)

除了编辑字体文件之外,我找不到真正的答案。 我不知道怎么做,也没有时间,所以我只是把我的照片缩小了,调整细胞使它看起来像是正确对齐的。

我想是一个肮脏的小黑客,但它的工作原理很好。

这是导致问题的唯一字体,因此问题必须与字体文件有关。

实际上并不是我的结论,这是另一个SO帖子,但我无法在任何地方找到它,如果我再次遇到它,我会坚持在评论中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM