使用 Autolayout 时, UILabel 字体设置为 Hiragino Sans 后,显示英文时部分内容被截断

2017-06-06 16:27:35 +08:00
 jk234ert

环境:xCode 8.2 , iOS 10.3.2

使用 autolayout 的情况下,如下代码:

open lazy var quizContentLabel: UILabel = {
        let label = UILabel()
        label.numberOfLines = 2
        label.font = TextStyle.QuizContent.font //"Hiragino Sans"
        label.lineBreakMode = .byTruncatingTail
        return label
    }()

label 的 Top, Leading, Trailing 都设了约束,fontSize 为 14

如果 label 中只设置日文文字,显示出的 label 高度为 28,lineSpacing 为 0,看上去很密集 如果其中有拉丁字母,如 g,y 这种下方超过 baseline 的,就会被截断或者与下一行重叠。

这里两点很困惑:

  1. Hiragino Sans 字体的 lineSpacing 默认是 0 ?这也太难看了
  2. 拉丁字母系统计算时不处理 descender 吗?

这种情况是我 autolayout 设置的不够吗?手动 sizeToFit 似乎能解决,但是既然用了 autolayout,还是希望能合理地处理好

3140 次点击
所在节点    iDev
0 条回复

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

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

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

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

© 2021 V2EX