【问题标题】:convert sketch line height into ios line 'height multiple' property将草图线高转换为 ios 线“高度倍数”属性
【发布时间】:2017-11-18 23:34:00
【问题描述】:

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

【问题讨论】:

  • 是单行标签吗?
  • @dirtydanee --- 不.. 它的段落。
  • 你的设计师应该定义字体大小和段落/行间距,而不是行高。
  • @dirtydanee .. 感谢您的建议.. 我刚刚上传了规范。其中提到了字体大小/和行高

标签: ios swift sketch-3


【解决方案1】:

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

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

paragraphStyle .lineSpacing = sketchLineHeight - font.lineHeight

前提是给定字体sketchFontSize

【讨论】:

    【解决方案2】:

    我发现以下公式对我很有效。 它将表单 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
    

    【讨论】:

      【解决方案3】:

      行高来自 CSS,因此您的设计师必须具有网页设计师背景。在移动平台上,我们不指定行高,而是line spacing

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 感谢您的回复,但我想知道如何将 18pt 更改为“高度倍数”;维度。
        • 实际上我的设计师给了我点线高。但我怀疑属性线属性单位是点。
        猜你喜欢
        • 2015-04-30
        • 2017-09-08
        • 2021-10-06
        • 1970-01-01
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多