最近在自学 iOS 开发,碰到了一个字体行高的问题,诸位大佬能否帮我解答一下。
设定字体为system和设定字体为苹方,肉眼看上去字体是一样的,但行高差别很大。我的想法是, iOS 系统字体默认不就是苹方吗,为什么行高会差别这么大,难道默认不是苹方?
1
yiios 2017-04-22 10:36:43 +08:00
行高差别很大? 你要用系统的 api 计算同一字号的两个字体的 label 行高有差距?
|
2
loveuqian 2017-04-22 10:39:07 +08:00
搭车问
有时候 UI 给的标记和实际开发中的不一样,这个问题应该怎么解决 |
3
yiios 2017-04-22 11:01:40 +08:00
@loveuqian UI 一般都是用 px 作为单位 你在做的时候要有意的考虑逻辑点跟 px 的转换 一般字体我都是 px/2=fontSize
|
4
mornlight 2017-04-22 11:20:35 +08:00 via iPhone
@loveuqian Label 等控件放文字的时候有行间距、 baseline 这些东西,设计给的图可能无法考虑得很全,我们通常会微调间距来让最终效果尽可能接近设计图。而不是设计图标了几个像素距离代码里就写多少距离。
|
5
vincentqi OP https://ooo.0o0.ooo/2017/04/22/58facc3b6c273.png
https://ooo.0o0.ooo/2017/04/22/58facc3c2241b.png |
6
vincentqi OP @loveuqian 先确定字体,然后你给一个每个字号的所占的默认 label 大小的表格,让 UI 标注的时候标到 Label 的边
|
7
a412739861 2017-04-22 12:29:06 +08:00 1
在 playground 里看,这两种 UIFont 就不是一样的。
let sysFont = UIFont.systemFont(ofSize: 16) let sysHeight = sysFont.lineHeight let sysName = sysFont.familyName //<UICTFont: 0x7ffe39705170> font-family: ".SFUIText"; font-weight: normal; font-style: normal; font-size: 16.00pt //19.09375 //".SF UI Text" let pingFont = UIFont(name: "PingFang-SC-Regular", size: 16) let pingHeight = pingFont?.lineHeight //<UICTFont: 0x7ffe394009b0> font-family: "PingFangSC-Regular"; font-weight: normal; font-style: normal; font-size: 16.00pt //22.4 我记得 iOS9 下默认 [中文] 字体是苹方,好像 San Francisco 才是系统默认字体吧,就是上面的.SF UI Text 。 San Francisco 链接: https://developer.apple.com/fonts/ |
8
morethansean 2017-04-22 12:46:26 +08:00
你用了冒号吧……中英文符号混用。应该只有中文部分是 PingFang ,默认的话。
|
9
vincentqi OP @a412739861
@morethansean 非常感谢! 系统字体确实是 San Francisco , 我一直以为 SFUIText 的 SF 是 system font 的意思... 行高不一样的原因是,我把字体设置为系统字体,在中文上的表现是,字是苹方的字,行高还是 San Francisco 的行高 |