这是我的标签:
let label = UILabel() label.numberOfLines = 4 var paragraph = NSMutableParagraphStyle() paragraph.lineSpacing = 5 paragraph.lineBreakMode = .ByTruncatingTail label.attributedText = NSAttributedString(string: "Some short text",attributes: [NSParagraphStyleAttributeName: paragraph])
这里是如何布局的.请注意文本下面的附加间距.
为了比较:
奇怪的是缺乏一致性.当标签延伸到第二行时,底线不再包括此额外的间距:
当有一行文本时,有没有办法删除这个行间距?还是以其他一些方式强制执行一些一致性,所以我至少可以解释一下呢?
更新
解决方法
好消息是,这是可修复的,但它需要使用新的指标来重新构建字体,这通常是一个试验/错误的事情.您可能还需要检查您的字体的许可证是否允许这样的事情(如果甚至重要).
话虽如此,当我开始一个新的项目时,这些是一些关于这个确切情况的问题的资源:
这是一个类似的问题,假设这是一个自定义字体问题:“Custom UIFont baseline shifted”.这个问题在UIButton“UIButton custom font vertical alignment”中涉及这个问题,但是这两个问题最终都在这个问题的答案“Custom installed font not displayed correctly in UILabel”.
我有一个个人测试应用程序的自定义字体现在,我使用,当我第一次给定一个自定义字体.这允许我为每次重建迭代单独测试字体,以确保它完美呈现.确保测试各种字体大小,甚至是其他语言的更改(是的,很多排列).使用自定义字体时,我已经有泰国和中国的问题,因为它们的上升沿非常接近UILabel边界边缘.我为自己创建的测试平台包括以各种大小和各种大小的各种语言的基本UILabels呈现的字体(因为像我说过的,过去使用某些语言中的自定义字体呈现良好的体验在罗马字符).
如果有人有一个更好的解决方案,我很乐意听到它,因为我遇到这个问题与自定义字体几乎每一次.这是我的工作流程,我们在布局之前开始补偿字体的渲染问题,或者使用单独的属性字符串调整,来解决问题.我不是字体专家,我只是一个喜欢字体渲染的人,像内置的字体(特别是使用自动布局时).