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,但我找不到它,如果我再次遇到它,我会坚持在评论中。