V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vincentqi
V2EX  ›  iOS

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

  •  
  •   vincentqi · 2017-04-22 10:09:40 +08:00 · 2509 次点击
    这是一个创建于 2560 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    9 条回复    2017-04-22 14:02:08 +08:00
    yiios
        1
    yiios  
       2017-04-22 10:36:43 +08:00
    行高差别很大? 你要用系统的 api 计算同一字号的两个字体的 label 行高有差距?
    loveuqian
        2
    loveuqian  
       2017-04-22 10:39:07 +08:00
    搭车问
    有时候 UI 给的标记和实际开发中的不一样,这个问题应该怎么解决
    yiios
        3
    yiios  
       2017-04-22 11:01:40 +08:00
    @loveuqian UI 一般都是用 px 作为单位 你在做的时候要有意的考虑逻辑点跟 px 的转换 一般字体我都是 px/2=fontSize
    mornlight
        4
    mornlight  
       2017-04-22 11:20:35 +08:00 via iPhone
    @loveuqian Label 等控件放文字的时候有行间距、 baseline 这些东西,设计给的图可能无法考虑得很全,我们通常会微调间距来让最终效果尽可能接近设计图。而不是设计图标了几个像素距离代码里就写多少距离。
    vincentqi
        5
    vincentqi  
    OP
       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
        6
    vincentqi  
    OP
       2017-04-22 11:28:44 +08:00
    @loveuqian 先确定字体,然后你给一个每个字号的所占的默认 label 大小的表格,让 UI 标注的时候标到 Label 的边
    a412739861
        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/
    morethansean
        8
    morethansean  
       2017-04-22 12:46:26 +08:00
    你用了冒号吧……中英文符号混用。应该只有中文部分是 PingFang ,默认的话。
    vincentqi
        9
    vincentqi  
    OP
       2017-04-22 14:02:08 +08:00
    @a412739861
    @morethansean
    非常感谢! 系统字体确实是 San Francisco , 我一直以为 SFUIText 的 SF 是 system font 的意思...
    行高不一样的原因是,我把字体设置为系统字体,在中文上的表现是,字是苹方的字,行高还是 San Francisco 的行高
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   996 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:13 · PVG 04:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.