【问题标题】:NSAttributedString: how to make multiline in another NSAttributedStringNSAttributedString:如何在另一个 NSAttributedString 中创建多行
【发布时间】:2019-06-25 14:37:11
【问题描述】:

我正在尝试在另一个文本中创建多行单独文本以实现以下文本样式。

我已尝试使用以下代码来生成目标,但代码的第三部分正在创建问题(中等字体)

    private func createLimitedDetailText() -> NSAttributedString {
        let totalText = "Attension, only\n 6 spaces\n left!"
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.alignment = .center

        let attributedString = NSMutableAttributedString(string: totalText, attributes: [
            .font: FontFamily.OpenSans.light.font(size: 29.0),
            .foregroundColor: UIColor.white,
            ])

        let bigText = attributedString.addAttribute(.font, value: FontFamily.OpenSans.extrabold.font(size: 70), range: NSRange(location: 17, length: 1))
        let medium = attributedString.addAttribute(.font, value: FontFamily.OpenSans.semibold.font(size: 29), range: NSRange(location: 18, length: 14))

        let textRange = NSRange(location: 0, length: attributedString.length)
        attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: textRange)

        return attributedString
    }

【问题讨论】:

  • 我认为只使用一个NSAttributedString 是不可能的。
  • 我可以使用多个 NSAttributedString。目前我正在用baselineOffset做一些实验,但是因为第三部分是2行,所以它会产生问题。

标签: ios swift uikit nsattributedstring nsparagraphstyle


【解决方案1】:

如果有人想知道答案,下面的代码会生成完全相同的结果:

    private func createLimitedDetailText() -> NSAttributedString {
        let totalText = "Attension, only\n 6"
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineHeightMultiple = 0.90
        paragraphStyle.alignment = .center

        let attributedString = NSMutableAttributedString(string: totalText, attributes: [
            .font: FontFamily.OpenSans.light.font(size: 29.0),
            .foregroundColor: UIColor.white,
            NSAttributedString.Key.paragraphStyle: paragraphStyle
            ])

        attributedString.addAttribute(.font, value: FontFamily.OpenSans.extrabold.font(size: 70), range: NSRange(location: 17, length: 1))

        let paragraphStyle2 = NSMutableParagraphStyle()
        paragraphStyle2.lineHeightMultiple = 0.30
        paragraphStyle2.alignment = .center

        let attributedString2 = NSMutableAttributedString(string: "    spaces\n     left!", attributes: [
            .font: FontFamily.OpenSans.semibold.font(size: 29.0),
            .foregroundColor: UIColor.white,
            .baselineOffset: 35,
            .paragraphStyle: paragraphStyle2
            ])
        attributedString.append(attributedString2)

        return attributedString
    }

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2023-03-07
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多