10

在此处输入图像描述

我的设计师给我发了草图文件,上面写着“线高:22”作为标签。我如何在 xcode 界面生成器中实现这一点。有没有办法使用代码或 UI 构建器来定义此行高。

4

4 回答 4

9

@bbjay 确实让我走上了正轨。

如果要得到 Sketch 的准确结果,公式为:

paragraphStyle .lineSpacing = sketchLineHeight - font.lineHeight

前提是给定字体sketchFontSize

于 2019-10-09T15:26:54.807 回答
8

我发现以下公式对我很有效。它将表单 Sketch 行高转换为 iOS 行距:

lineSpacing = sketchLineHeight - sketchFontSize - (font.lineHeight - font.pointSize)

在代码中,对于您的情况,这将是:

let font = UIFont.systemFont(ofSize: 18) // or whatever font you use
textLabel.font = font
let attributedString = NSMutableAttributedString(string: "your text")
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 22 - 18 - (font.lineHeight - font.pointSize)
attributedString.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length))
textLabel.attributedText = attributedString
于 2018-11-28T23:39:33.417 回答
5

行高来自 CSS,所以你的设计师必须有网页设计师背景。在移动平台上,我们不指定行高,而是指定行距

一般来说, NSMutableParagraphStyle提供了为 iOS 修改多行标签的功能。

NSMutableParagraphStyle有一个名为maximumLineHeight的属性,但这只会将最大行高设置为某个值,如果标签的包含将超过某个值。

要在 IB 中进行设置,您需要添加标签,并将Text属性更改为Attributed. 然后单击段落样式图标,然后设置标签的行距。查看设计,它大约是 2 点的行距,这是您所需要的。您可以要求您的设计师为您提供行距属性,也可以通过随机尝试不同的值来尝试找到正确的行距值。

在此处输入图像描述

于 2017-06-16T11:05:59.757 回答
1

在情节提要中,使用AtributedUILabel 的样式。下面是 2.5 行高的示例

在此处输入图像描述

于 2017-06-16T09:21:12.897 回答