请教一个 iOS 字体行高的问题

2017-04-22 10:09:40 +08:00
 vincentqi

最近在自学 iOS 开发,碰到了一个字体行高的问题,诸位大佬能否帮我解答一下。

设定字体为system和设定字体为苹方,肉眼看上去字体是一样的,但行高差别很大。我的想法是, iOS 系统字体默认不就是苹方吗,为什么行高会差别这么大,难道默认不是苹方?

2537 次点击
所在节点    iOS
9 条回复
yiios
2017-04-22 10:36:43 +08:00
行高差别很大? 你要用系统的 api 计算同一字号的两个字体的 label 行高有差距?
loveuqian
2017-04-22 10:39:07 +08:00
搭车问
有时候 UI 给的标记和实际开发中的不一样,这个问题应该怎么解决
yiios
2017-04-22 11:01:40 +08:00
@loveuqian UI 一般都是用 px 作为单位 你在做的时候要有意的考虑逻辑点跟 px 的转换 一般字体我都是 px/2=fontSize
mornlight
2017-04-22 11:20:35 +08:00
@loveuqian Label 等控件放文字的时候有行间距、 baseline 这些东西,设计给的图可能无法考虑得很全,我们通常会微调间距来让最终效果尽可能接近设计图。而不是设计图标了几个像素距离代码里就写多少距离。
vincentqi
2017-04-22 11:22:20 +08:00
https://ooo.0o0.ooo/2017/04/22/58facc3b6c273.png
https://ooo.0o0.ooo/2017/04/22/58facc3c2241b.png
vincentqi
2017-04-22 11:28:44 +08:00
@loveuqian 先确定字体,然后你给一个每个字号的所占的默认 label 大小的表格,让 UI 标注的时候标到 Label 的边
a412739861
2017-04-22 12:29:06 +08:00
在 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/
morethansean
2017-04-22 12:46:26 +08:00
你用了冒号吧……中英文符号混用。应该只有中文部分是 PingFang ,默认的话。
vincentqi
2017-04-22 14:02:08 +08:00
@a412739861
@morethansean
非常感谢! 系统字体确实是 San Francisco , 我一直以为 SFUIText 的 SF 是 system font 的意思...
行高不一样的原因是,我把字体设置为系统字体,在中文上的表现是,字是苹方的字,行高还是 San Francisco 的行高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX