Pet*_*ete 114 fonts objective-c vertical-alignment ios
我有一个UIButton使用自定义字体,在我的视图加载时设置:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是字体似乎浮出中心线.如果我注释掉这一行,默认字体会垂直居中显示.但是更改为自定义字体会破坏垂直对齐.
我也在使用自定义字体的Table Cell上遇到了同样的问题.
我是否需要告诉视图某处自定义字体不像其他字体那么高?
编辑:我刚刚意识到我使用的字体是Windows TrueType字体.我可以在Mac上的TextEdit中使用它,只是我的应用程序中的对齐问题

kol*_*hiy 305
在UILabel中未正确显示的Custom安装字体中讨论了类似的问题.没有给出解决方案.
这是适用于我的自定义字体的解决方案,在UILabel,UIButton等中存在相同的问题.事实上,字体的问题是它的上升属性与系统字体的值相比太小了.Ascender是字体字符上方的垂直空格.要修复字体,您必须下载Apple Font Tool Suite命令行实用程序.然后取你的字体并执行以下操作:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
Run Code Online (Sandbox Code Playgroud)
这将创造Bold.hhea.xml.使用文本编辑器打开它并增加ascender属性值.您将需要进行一些实验,以找出最适合您的确切值.在我的情况下,我将其从750更改为1200.然后使用以下命令行再次运行该实用程序,将您的更改合并回ttf文件:
~$ ftxdumperfuser -t hhea -A f Bold.ttf
Run Code Online (Sandbox Code Playgroud)
然后在您的应用中使用生成的ttf字体.
OS X El Capitan
Apple字体工具套件安装程序因为SIP而无法在OSX El Capitan上运行,因为它尝试将二进制文件安装到受保护的目录中.你必须手动提取ftxdumperfuser.首先,PKG从DMG复制到本地目录后解压缩OS X Font Tools.pkg与
~$ xar -xf OS\ X\ Font\ Tools.pkg
Run Code Online (Sandbox Code Playgroud)
现在导航到文件夹fontTools.pkg中
~$ cd fontTools.pkg/
Run Code Online (Sandbox Code Playgroud)
使用提取有效负载
~$ cat Payload | gunzip -dc | cpio -i
Run Code Online (Sandbox Code Playgroud)
现在ftxdumperfuser二进制文件位于当前文件夹中.您可以将其移动到/usr/local/bin/以便可以在终端应用程序内的每个文件夹中使用它,具体如下.
~$ mv ftxdumperfuser /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
Jor*_*nas 48
我解决了调整顶部内容(不是标题!)插图的问题.
例如:button.contentEdgeInsets = UIEdgeInsetsMake(10.0,0.0,0.0,0.0);
祝好运!
我认为这是最好的答案. 没有玩ascender,numberOfHMetrics等......只需通过Glyphs应用程序导入导出和完成工作.感谢这个答案:https: //stackoverflow.com/a/16798036/1207684
不确定这是否有用,因为它可能取决于您的字体,但可能是您的基线未对齐.
self.searchButton.titleLabel.baselineAdjustment =
UIBaselineAdjustmentAlignCenters;
Run Code Online (Sandbox Code Playgroud)